自行设置项目和集群
使用 asmcli 安装 Cloud Service Mesh 时,如果您添加 --enable_all 标志或更精细的启用标志,它可以为您配置项目和集群。如果您希望自行设置,而不是让 asmcli 进行更改,请按照本页面中的步骤操作。
如果您安装了先前版本的 Cloud Service Mesh,则在使用 asmcli 升级到最新 Cloud Service Mesh 版本之前,您无需对项目或集群进行任何更改。
默认情况下,asmcli 不会安装 istio-ingressgateway。我们建议您单独部署和管理控制平面和网关。Cloud Service Mesh 支持为网关部署使用自动注入,这使得 Cloud Service Mesh 升级更容易。升级 Cloud Service Mesh 后,您可以像您的服务一样重启网关以获取新的控制平面配置。如需了解详情,请参阅安装和升级网关。
准备工作
- 查看前提条件和要求(在 Google Cloud外部、GKE)
- 规划安装(在 Google Cloud外部、GKE)或升级
- 安装所需的工具(在 Google Cloud外部、GKE)
设置项目
- 获取在其中创建集群的项目的 ID。 - gcloud- 运行以下命令: - gcloud projects list- 控制台- 前往Google Cloud 控制台中的信息中心页面。 
- 点击页面顶部的下拉列表。在随即显示的请选择:窗口中,选择您的项目。 - 项目 ID 会显示在项目信息中心的项目信息卡片上。 
 
- 使用项目 ID 为工作负载池创建环境变量: - export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
- 设置所需的 Identity and Access Management (IAM) 角色。如果您是 Project Owner,则拥有完成安装所需的全部权限。如果您不是 Project Owner,则需要有人授予您以下特定 IAM 角色。在以下命令中,将 - PROJECT_ID替换为上一步中的项目 ID,并将- GCP_EMAIL_ADDRESS替换为您用于登录 Google Cloud的账号。- ROLES=( 'roles/servicemanagement.admin' \ 'roles/serviceusage.serviceUsageAdmin' \ 'roles/meshconfig.admin' \ 'roles/compute.admin' \ 'roles/container.admin' \ 'roles/resourcemanager.projectIamAdmin' \ 'roles/iam.serviceAccountAdmin' \ 'roles/iam.serviceAccountKeyAdmin' \ 'roles/gkehub.admin') for role in "${ROLES[@]}" do gcloud projects add-iam-policy-binding PROJECT_ID \ --member "user:GCP_EMAIL_ADDRESS" \ --role="$role" done- 如果您在运行 - asmcli时添加- --enable_all或- --enable_gcp_iam_roles标志,它会为您设置所需的 IAM 角色。
- 启用所需的 Google API: - gcloud services enable \ --project=PROJECT_ID \ mesh.googleapis.com- 除了 - mesh.googleapis.com之外,此命令还会启用以下 API:- API - 用途 - 是否可以停用 - meshconfig.googleapis.com- Cloud Service Mesh 使用 Mesh Configuration API 将配置数据从网格中继到 Google Cloud。此外,启用 Mesh Configuration API 后,您可以访问 Google Cloud 控制台中的 Cloud Service Mesh 页面以及使用 Cloud Service Mesh 证书授权机构。 - 否 - meshca.googleapis.com- 与托管式 Cloud Service Mesh 使用的 Cloud Service Mesh 证书授权机构相关。 - 否 - container.googleapis.com- 必须启用此 API 才能创建 Google Kubernetes Engine (GKE) 集群。 - 否 - gkehub.googleapis.com- 必须启用此 API 才能以舰队形式管理网格。 - 否 - monitoring.googleapis.com- 必须启用此 API 才能捕获网格工作负载的遥测数据。 - 否 - stackdriver.googleapis.com- 必须启用此 API 才能使用服务界面。 - 否 - opsconfigmonitoring.googleapis.com- 必须启用此 API 才能将服务界面用于Google Cloud 外部的集群。 - 否 - connectgateway.googleapis.com- 必须启用此 API,以便托管式 Cloud Service Mesh 控制平面可以访问网格工作负载。 - 是* - trafficdirector.googleapis.com- 实现可用性高且可伸缩的托管式控制平面。 - 是* - networkservices.googleapis.com- 实现可用性高且可伸缩的托管式控制平面。 - 是* - networksecurity.googleapis.com- 实现可用性高且可伸缩的托管式控制平面。 - 是* - 启用 API 可能需要 1 分钟或更长时间才能完成。启用这些 API 后,您将看到如下输出: - Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully. - 如果您在运行 - asmcli时添加- --enable_all或- --enable_apis标志,它会为您启用所需的 API。
设置集群
如果您添加 --enable_all 标志或更精细的启用标志,asmcli 脚本会为您设置集群。
- 初始化您的项目,以便准备好安装。除了其他操作,以下命令还会创建一个服务账号,可让数据平面组件(例如边车代理)安全地访问您的项目的数据和资源: 在以下命令中,将 - FLEET_PROJECT_ID替换为舰队宿主项目- curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header "Content-Type: application/json" \ --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \ "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"- 该命令会以空花括号作为响应: - {}
- 对于 GKE on Google Cloud 集群,请为 Google Cloud CLI 设置默认可用区或区域。如果您未在此处设置默认值,请务必在本页面的 - gcloud container clusters命令中指定- --zone或- --region选项。- 如果您有一个单区域集群,请设置默认区域: - gcloud config set compute/zone CLUSTER_LOCATION
- 如果您有一个区域级集群,请设置默认区域: - gcloud config set compute/region CLUSTER_LOCATION
 
- 对于 GKE on Google Cloud 集群,请启用Workload Identity: - gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}- 启用 Workload Identity 最长可能需要 10 到 15 分钟。 
- 对于 GKE on Google Cloud 集群,请启用 GKE 上的 Cloud Monitoring 和 Cloud Logging: - gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
您的项目和集群现在已准备好使用 asmcli 进行新的安装。