自行设置项目和 GKE 集群
使用 asmcli
安装 Anthos Service Mesh 时,如果您添加 --enable_all
标志或更精细的启用标志,它可以为您配置项目和 GKE on Google Cloud 集群。如果您希望自行设置,而不是让 asmcli
进行更改,请按照本页面中的步骤操作。
如果您安装了旧版 Anthos Service Mesh,那么在使用 asmcli
升级 至最新 Anthos Service Mesh 版本之前,无需对项目或集群进行任何更改。
默认情况下,asmcli
不会安装 istio-ingressgateway
。我们建议您单独部署和管理控制平面和网关。Anthos Service Mesh 支持网关部署的自动注入,这使得 Anthos Service Mesh 升级更容易。升级 Anthos Service Mesh 后,您可以像您的服务一样重启网关以获取新的控制平面配置。如需了解详情,请参阅安装和升级网关。
准备工作
设置项目
获取在其中创建集群的项目的 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
Anthos Service Mesh 使用 Mesh Configuration API 将配置数据从网格中继到 Google Cloud。此外,启用 Mesh Configuration API 还可访问 Google Cloud 控制台中的 Anthos Service Mesh 页面,并使用 Anthos Service Mesh 证书授权机构 (Mesh CA)。 否 meshca.googleapis.com
与代管式 Anthos Service Mesh 使用的 Anthos 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 是必需的,以便代管式 Anthos 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
脚本会为您设置集群。
为 Google Cloud CLI 设置默认可用区或区域。如果您未在此处设置默认值,请务必在本页面的
gcloud container clusters
命令中指定--zone
或--region
选项。如果您有一个单可用区集群,请设置默认可用区:
gcloud config set compute/zone CLUSTER_LOCATION
如果您有一个区域级集群,请设置默认区域:
gcloud config set compute/region CLUSTER_LOCATION
-
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}
启用 Workload Identity 最长可能需要 10 到 15 分钟。
初始化您的项目,以便准备好安装。除了其他操作,以下命令还会创建一个服务账号,可让数据平面组件(例如边车代理)安全地访问您的项目的数据和资源: 在以下命令中,将
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 上的 Cloud Monitoring 和 Cloud Logging:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
您的项目和集群现在已准备好使用 asmcli
进行新的安装。