配置由 GKE On-Prem API 管理的用户集群

使用 gkectl 创建的 Anthos clusters on VMware (GKE On-Prem) 用户集群未配置为与 GKE 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

注册用户集群

在管理员工作站上执行以下步骤。

  1. 使用您的 Google 帐号登录:

    gcloud auth login --no-browser
    
  2. 创建一个服务帐号以授权 gkectl 注册集群:

    gcloud iam service-accounts create SA_NAME \
        --project SA_PROJECT_ID
    

    请替换以下内容:

    • SA_NAME 替换为您要提供给服务帐号的名称。建议您使用描述服务帐号用途的名称,例如 enrollment-sa
    • SA_PROJECT_ID 替换为您的服务帐号的父项目 ID。您在其中创建服务帐号的项目可以是使用该服务帐号的项目,也可以是其他项目。
  3. 为您的服务帐号创建 JSON 密钥:

    gcloud iam service-accounts keys create SA_NAME-key.json \
       --iam-account=SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com
    
  4. 在舰队宿主项目中启用 GKE On-Prem API:

    gcloud services enable \
        --project FLEET_PROJECT_ID \
        gkeonprem.googleapis.com
    

    FLEET_PROJECT_ID 替换为舰队宿主项目的 ID。此项目必须是您的管理员集群和用户注册到的 Cloud 项目(在集群配置文件的 gkeConnect.projectID 字段中指定)。

  5. gkeonprem.admin 角色授予您的服务帐号:

    gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \
        --member "serviceAccount:SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/gkeonprem.admin"
    
  6. 设置应用默认凭据以使用服务帐号。这可确保 gcloud CLI 使用您之前创建的服务帐号。

    export GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SA_KEY/SA_NAME-key.json
    
  7. 运行 gkectl enroll cluster 命令。替换以下内容:

    • CLUSTER_NAME 替换为用户集群的名称。
    • ADMIN_CLUSTER_KUBECONFIG 替换为管理员集群的 kubeconfig 文件的路径。
    gkectl enroll cluster --cluster-name=CLUSTER_NAME \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    如果要注册的项目中有多个用户集群,您可以使用同一服务帐号和密钥,并且只需为每个集群运行 gkectl enroll cluster 即可。