連線至 AKS 叢集

本文將說明三種連線至 AKS 附加叢集的方法:

  • 方法 1 會以「Google 使用者」身分連線至叢集。
  • 方法 2:以 Google 群組成員身分連線至叢集。
  • 方法 3 會以非 Google 使用者或群組的身分連線至叢集。

這三種連線至已註冊叢集的方法,都是透過名為「連線閘道」的 Google 服務啟用。如要進一步瞭解 Connect Gateway,請參閱「使用 Connect Gateway 連線至已註冊的叢集」。

本文適用於想要設定、監控及管理雲端基礎架構的 IT 管理員和操作人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。

事前準備

執行任何方法前,請務必先附加叢集。 詳情請參閱「連結 AKS 叢集」。

如要使用方法 2 或方法 3,請先滿足其他必要條件。詳情請參閱以下各節說明。

開始方法 2 之前

如要使用方法 2 連線至附加的叢集,請確認符合下列必要條件:

  • 最新版 Google Cloud CLI。如要瞭解如何更新 gcloud CLI,請參閱 gcloud components update
  • 附加叢集版本 1.26.0-gke.8、1.27.0-gke.5、1.28.0-gke.2 以上版本。

開始方法 3 之前

如要使用方法 3 連線至附加的叢集,請確認您符合下列必要條件:

  1. 確認您擁有最新版的 Google Cloud CLI。如要瞭解如何更新 gcloud CLI,請參閱 gcloud components update

  2. 請確認您使用的是連結叢集 1.27.0-gke.5、1.28.0-gke.2 以上版本。

  3. 設定員工身分聯盟 (讓外部使用者或群組可以使用 GKE 連結叢集 API):

  4. 選用:為外部使用者或群組指派適當的 Identity and Access Management (IAM) 角色。只有在您想授予使用者或群組建立或更新叢集的權限時,才需要執行這個步驟;如要存取叢集,則不需要執行這個步驟

    請注意,角色是一組權限。將角色指派給實體 (使用者、群組或服務帳戶) 時,您會授予該實體角色包含的所有權限。

    使用者

    如要為個別使用者指派角色,請按照下列步驟操作:gkemulticloud.admin

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE"
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • WORKFORCE_POOL_ID:用來在 Google Cloud中專屬識別工作團隊身分集區的 ID。格式化 ID 時,請務必遵循 IAM 說明文件「查詢參數」中提供的建議做法。
    • SUBJECT_VALUE:可專屬識別外部使用者的 ID。舉例來說,ID 可以是電子郵件地址,例如 alex@cymbalgroup.com

    群組

    如要為群組指派角色,請指派 gkemulticloud.admin 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • WORKFORCE_POOL_ID:用來在 Google Cloud中專屬識別工作團隊身分集區的 ID。格式化 ID 時,請務必遵循 IAM 文件中「查詢參數」提供的建議做法。
    • GROUP_ID:可專屬識別外部群組的 ID。

    如要進一步瞭解 GKE 連結叢集所需的 API 角色和權限,請參閱「API 角色和權限」。

方法 1:以 Google 使用者身分連線至附加的叢集

如要以 Google 使用者身分連線至附加叢集,請按照下列步驟操作:

  1. 使用下列指令啟用 connectgatewaycloudresourcemanager API:

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

    PROJECT_ID 替換為專案 ID。 Google Cloud

  2. 自動或手動設定及套用 RBAC 規則:

    • 自動方法:如果您在附加叢集時,於 gcloud container attached clusters register 指令的 --admin-users 欄位中指定 Google 使用者,系統會自動授予這些使用者叢集的管理員權限。因此可以略過這個步驟。

    • 手動方法:建立 Kubernetes YAML 資訊清單,為個別 Google 使用者手動設定 RBAC 規則。詳情請參閱「使用 RBAC 授權」。

  3. 使用下列指令取得 Kubernetes kubeconfig 設定檔:

    gcloud container fleet memberships get-credentials CLUSTER_NAME
    

    CLUSTER_NAME 替換為您要取得連線憑證的叢集名稱。

完成這些步驟後,您就能以 Google 使用者身分連線至附加叢集。

方法 2:使用 Google 群組連結至附加的叢集

這個方法可讓您以 Google 群組成員身分連線至附加的叢集。換句話說,您授予 Google 群組叢集存取權後,該 Google 群組的所有使用者都能存取叢集。

使用 Google 群組授予叢集存取權,比為個別使用者建立授權更有效率。舉例來說,假設您想將 50 位使用者新增至叢集管理員群組、75 位使用者新增至編輯者群組,以及 100 位使用者新增至讀者群組。如本文件所述的方法 1,您必須在 Kubernetes 資訊清單檔案中為 225 位使用者建立 RBAC 規則。不過,方法 2 只需要為三個 Google 群組建立 RBAC 規則,因此可節省時間。

如要授權 Google 群組連線至已連結的叢集,請按照下列步驟操作:

  1. 使用下列指令啟用 connectgatewaycloudresourcemanager API:

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

    PROJECT_ID 替換為專案 ID。Google Cloud

  2. 如果專案網域中沒有 gke-security-groups 群組,請建立該群組。

  3. gke-security-groups 群組中建立一或多個子群組,用於叢集驗證。

  4. 將使用者加入新建立的子群組。

  5. 將 IAM 角色授予 Google 群組:

    1. 為群組選取適當的角色。這個角色會決定群組與連線閘道的互動方式。角色可以是下列其中一種:roles/gkehub.gatewayAdminroles/gkehub.gatewayEditorroles/gkehub.gatewayReader。(請注意,您並未在此授予附加叢集的權限,該步驟會在稍後進行。在這裡,您只是要決定群組使用者如何操控連線閘道)。

    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 的使用者可以管理員身分連線至叢集。

方法 3:在附加或更新叢集時授予外部身分存取權

方法 3 會在您附加或更新叢集時,授予外部身分的存取權。

如要連結 AKS 叢集,請按照「連結 AKS 叢集」一文中的步驟操作。如要更新 AKS 叢集,請按照「更新 AKS 叢集」一文中的步驟操作。

執行 gcloud CLI 指令來註冊或更新叢集時,請指定 admin-users 和/或 admin-groups 參數,如下所示:

gcloud container attached clusters [register|update] CLUSTER_NAME \
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • WORKFORCE_POOL_ID:用來在 Google Cloud中專屬識別工作團隊身分集區的 ID。格式化 ID 時,請務必遵循 IAM 文件中「查詢參數」提供的建議做法。
  • SUBJECT_VALUE:可專屬識別外部使用者的 ID。舉例來說,ID 可以是電子郵件地址,例如 alex@cymbalgroup.com
  • GROUP_ID:可專屬識別外部群組的 ID。

後續步驟

如要透過 Google Cloud 控制台使用 Cloud Identity 管理叢集,請參閱使用 Google Cloud 身分登入