将 Google 群组连接到 GKE on AWS

本文档介绍如何以 Google 群组成员的身份连接到 GKE on AWS。

与为各个用户创建单独的授权相比,使用 Google 群组授予集群访问权限更为高效。例如,假设您要将 50 个用户添加到集群 Administrator 群组,将 75 个用户添加到 Editor 群组,将 100 个用户添加到 Reader 群组。如果您要使所有这些用户都能够连接到集群,则需要在 Kubernetes 清单文件中为 225 位用户创建 RBAC 规则。但是,通过 Google 群组启用对集群的访问可以节省时间,因为您只需要为三个 Google 群组创建 RBAC 规则。

准备工作

如需以 Google 群组的成员身份连接到集群,您需要满足以下前提条件:

  1. 确保您拥有最新版本的 Google Cloud CLI。如需了解如何更新 gcloud CLI,请参阅 gcloud components update

  2. 使用 GKE on AWS 1.25 版或更高版本,这是使用 Connect 网关进行 kubectl 访问所必需的。

通过 Google 群组连接到您的集群

如需授权 Google 群组连接到 GKE on AWS,请按照以下步骤操作:

  1. 使用以下命令启用 connectgatewaycloudresourcemanager API:

      gcloud services enable --project=PROJECT_ID \
          connectgateway.googleapis.com \
          cloudresourcemanager.googleapis.com
    

    PROJECT_ID 替换为您的 AWS 项目的 ID。

  2. 在项目的网域中创建一个名为 gke-security-groups 的群组(如果该群组尚不存在)。

  3. gke-security-groups 群组中创建一个或多个子群组以进行集群身份验证。

  4. 将用户添加到新创建的子群组。

  5. 如需使用连接网关进行 kubectl 访问,您需要向 Google 群组授予 IAM 角色:

    1. 为群组选择适当的角色。此角色决定了群组与 Connect 网关的交互方式。角色可以是以下之一:roles/gkehub.gatewayAdminroles/gkehub.gatewayEditorroles/gkehub.gatewayReader。(请注意,在此步骤中,您不授予对集群的权限,该步骤将在后面执行。在这里,您只是确定群组用户操作 Connect 网关的方式。)

    2. 运行以下命令,向群组授予角色:

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=group:GROUP_NAME@DOMAIN \
        --role=GATEWAY_ROLE
      

      替换以下内容:

      • PROJECT_ID:您的 Google 项目 ID
      • GROUP_NAME:要授予访问权限的群组的名称
      • DOMAIN:您的 Google Workspace 网域
      • GATEWAY_ROLE:所选角色。例如 roles/gkehub.gatewayAdminroles/gkehub.gatewayEditorroles/gkehub.gatewayReader
  6. 在 Kubernetes 清单中,定义每个 Google 群组拥有的集群权限。例如,以下清单向 Google 群组 cluster-admin-team 授予集群管理员角色:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: cluster-admin-team@example.com
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    
  7. 通过运行以下命令将清单保存为文件并应用于集群:

    kubectl apply -kubeconfig=KUBECONFIG_PATH -f FILENAME
    

    替换以下内容:

    • KUBECONFIG_PATHkubeconfig 文件的路径。
    • FILENAME:您创建的清单文件的名称。

执行这些步骤后,属于特定 Google 群组的用户便可以连接到集群。在此示例中,属于 Google 群组 cluster-admin-team 的用户可以作为管理员连接到集群。