本页面介绍对于属于相同项目的集群构成的网格,如何为您的 Cloud 项目及Google Kubernetes Engine (GKE) 集群进行 Anthos Service Mesh 设置。当您使用 Google 提供的脚本 install_asm
时,如果您添加了 --enable_all
标志或更精细的启用标志,该脚本可以为您配置项目和集群:如果您希望自行设置,而不是让 install_asm
进行更改,请按照本页面中的步骤操作。如果您安装了旧版 Anthos Service Mesh,则无需对项目或集群进行任何更改,然后才能使用 install_asm
升级 至最新 Anthos Service Mesh 版本。
准备工作
设置项目
获取在其中创建集群的项目的 ID 和编号。
gcloud
运行以下命令:
gcloud projects list
控制台
前往 Google Cloud 控制台中的信息中心页面。
点击页面顶部的下拉列表。在随即显示的请选择:窗口中,选择您的项目。
项目 ID 和项目编号显示在项目信息中心的项目信息卡片上。
创建以下环境变量:
使用项目 ID 设置工作负载池:
export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
使用项目编号设置网格 ID:
export MESH_ID="proj-PROJECT_NUMBER"
设置所需的 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
如果您在运行
install_asm
时添加--enable_all
或--enable_gcp_iam_roles
标志,则会为您设置所需的 IAM 角色。启用以下 Google API:
gcloud services enable \ --project=PROJECT_ID \ container.googleapis.com \ compute.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ cloudtrace.googleapis.com \ meshca.googleapis.com \ meshtelemetry.googleapis.com \ meshconfig.googleapis.com \ iamcredentials.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ cloudresourcemanager.googleapis.com \ stackdriver.googleapis.com
启用 API 可能需要 1 分钟或更长时间才能完成。启用这些 API 后,您将会看到如下所示的输出:
Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully.
如果您在运行
install_asm
时添加--enable_all
或--enable_apis
标志,则会为您启用所需的 API。
设置集群
如果您添加 --enable_all
标志或更精细的启用标志之一,则 install_asm
脚本会为您设置集群。
为 Google Cloud CLI 设置默认可用区或区域。如果您未在此处设置默认值,请务必在本页面的
gcloud container clusters
命令中指定--zone
或--region
选项。如果您有一个单可用区集群,请设置默认可用区:
gcloud config set compute/zone CLUSTER_LOCATION
如果您有一个区域级集群,请设置默认区域:
gcloud config set compute/region CLUSTER_LOCATION
在集群上设置
mesh_id
标签。如果您的集群已有要保留的标签,则在添加mesh_id
标签时必须将这些标签包含在内。如需查看您的集群是否已有标签,请执行以下操作:
gcloud container clusters describe CLUSTER_NAME \ --project PROJECT_ID
在输出中查找
resourceLabels
字段。每个标签都存储在resourceLabels
字段下的单独的一行中,例如:resourceLabels: csm: '' env: dev release: stable
为方便起见,您可以向环境变量添加标签。在以下命令中,请将
YOUR_EXISTING_LABELS
替换为集群上以英文逗号分隔的现有标签列表,格式为KEY=VALUE
,例如:env=dev,release=stable
export EXISTING_LABELS="YOUR_EXISTING_LABELS"
设置
mesh_id
标签:如果您的集群已有要保留的标签,请使用
mesh_id
和现有标签更新集群:gcloud container clusters update CLUSTER_NAME \ --project PROJECT_ID \ --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
如果您的集群没有任何现有标签,请仅使用
mesh_id
标签更新集群:gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --update-labels=mesh_id=${MESH_ID}
-
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}
启用 Workload Identity 最长可能需要 10 到 15 分钟。
初始化您的项目,以便准备好安装。除此之外,以下命令会创建一个服务账号,可让数据平面组件(例如边车代理)安全地访问您的项目的数据和资源:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
该命令会以空花括号作为响应:
{}
启用 GKE 上的 Cloud Monitoring 和 Cloud Logging:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --logging=SYSTEM,WORKLOAD \ --monitoring=SYSTEM
您的项目和 GKE 集群现已准备好使用 install_asm
从 Istio 进行安装或迁移。使用 install_asm
配置文件安装 Anthos Service Mesh 时,该脚本执行以下操作:
- 验证您的项目和集群。
- 在您的项目中创建服务账号,让控制平面组件访问项目的数据和资源。
- 使用您的项目和集群信息,配置所需的
IstioOperator
自定义资源 (CR) 文件,以启用默认功能。 - 调用
istioctl install
。调用install_asm
以启用可选功能时,您可以指定额外的IstioOperator
CR 文件
后续步骤
- 对于新安装,请参阅安装 Anthos Service Mesh
- 如需从 Istio 迁移到 Anthos Service Mesh,请参阅从 Istio 迁移