使用 gkectl
创建的 Anthos Clusters on VMware (GKE On-Prem) 用户集群未配置为与 Anthos On-Prem API 配合使用,该 API 是在 Google Cloud 控制台中创建用户集群时自动启用的 Google Cloud 托管的 API。如需使用控制台管理使用 gkectl
创建的用户集群的生命周期,您需要使用 gkectl enroll cluster
命令配置集群。
使用要求
用户集群必须满足以下要求:
- 1.11 版或更高版本。
- 已向舰队注册,从 1.8 版开始该操作会在创建集群时自动执行。
如果您的组织设置了许可名单,以允许来自 Google API 和其他地址的流量通过代理服务器,请将以下条目添加到许可名单:
- gkeonprem.googleapis.com
- gkeonprem.mtls.googleapis.com
注册用户集群
在管理员工作站上执行以下步骤。
使用您的 Google 帐号登录:
gcloud auth login --no-browser
创建一个服务帐号以授权
gkectl
注册集群:gcloud iam service-accounts create SA_NAME \ --project SA_PROJECT_ID
请替换以下内容:
- 将 SA_NAME 替换为您要提供给服务帐号的名称。建议您使用描述服务帐号用途的名称,例如
enrollment-sa
。 - 将 SA_PROJECT_ID 替换为您的服务帐号的父项目 ID。您在其中创建服务帐号的项目可以是使用该服务帐号的项目,也可以是其他项目。
- 将 SA_NAME 替换为您要提供给服务帐号的名称。建议您使用描述服务帐号用途的名称,例如
为您的服务帐号创建 JSON 密钥:
gcloud iam service-accounts keys create SA_NAME-key.json \ --iam-account=SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com
在舰队宿主项目中启用 Anthos On-Prem API:
gcloud services enable \ --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
将 FLEET_HOST_PROJECT_ID 替换为舰队宿主项目的 ID。此项目必须是您的管理员集群和用户注册到的 Google Cloud 项目(在集群配置文件的 gkeConnect.projectID 字段中指定)。
将
gkeonprem.admin
角色授予您的服务帐号:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/gkeonprem.admin"
设置应用默认凭据以使用服务帐号。这可确保 gcloud CLI 使用您之前创建的服务帐号。
export GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SA_KEY/SA_NAME-key.json
运行
gkectl enroll cluster
命令。替换以下内容:- 将 CLUSTER_NAME 替换为用户集群的名称。
- 将 ADMIN_CLUSTER_KUBECONFIG 替换为管理员集群的
kubeconfig
文件的路径。
gkectl enroll cluster --cluster-name=CLUSTER_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
如果要注册的项目中有多个用户集群,您可以使用同一服务帐号和密钥,并且只需为每个集群运行
gkectl enroll cluster
即可。