透過 Google Cloud 控制台管理叢集

本文說明如何透過 Google Cloud 控制台管理使用 VMware 適用的 Google Distributed Cloud 軟體建立的叢集。包括登入叢集及查看工作負載等基本管理作業,以及如何啟用叢集生命週期管理功能,以便升級、更新及刪除叢集。

車隊成員和控制台

所有 Google Distributed Cloud 叢集都必須是機群的成員,才能以統一方式查看及管理多個叢集和工作負載。每個叢集機群都會與機群主專案建立關聯。

在 Google Distributed Cloud 中,管理員叢集會在建立時向機群註冊,方法是在叢集設定檔的 gkeConnect 區段中指定機群主專案。Google Distributed Cloud 會使用這項資訊,將叢集註冊至指定的車隊專案。如果註冊失敗,請執行 gkectl update credentials register 重新嘗試註冊。

請注意,重新嘗試註冊時,您不需要更新connect-register 服務帳戶金鑰。換句話說,您可以繼續使用原本的連結註冊服務帳戶。如要進一步瞭解這項指令,請參閱「輪替服務帳戶金鑰」。

在 Google Distributed Cloud 中,使用者叢集會在建立時註冊至機群:

  • 使用 gkectl 建立使用者叢集時,請在叢集設定檔的 gkeConnect 區段中指定 Fleet 主機專案。Google Distributed Cloud 會使用這項資訊,向指定的機群專案註冊叢集。

  • 使用標準工具 (控制台、Google Cloud CLI 或 Terraform) 建立使用者叢集時,叢集會自動成為您指定專案中的車隊成員。

主控台會在機群主機專案中顯示 Google Cloud 以外的機群成員,例如 Google Distributed Cloud,以及其他機群叢集,例如 GKE on Google Cloud。您可透過控制台管理 Google Distributed Cloud 的程度取決於下列因素:

  • 設定驗證後,即可登入叢集,並查看工作負載和其他詳細資料。

  • 如果您已為叢集啟用叢集生命週期管理,也可以使用控制台升級、更新或刪除使用者叢集。如果未啟用這項功能,您只能在管理員工作站上使用 gkectl 管理叢集生命週期。

查看已註冊的叢集

控制台的「Google Kubernetes Engine 叢集總覽」頁面會顯示所有車隊叢集。您不僅可以概覽整個機群,還能查看哪些叢集是由 GKE On-Prem API 管理 (適用於 Google Distributed Cloud)。

如要查看機群叢集,請按照下列步驟操作:

  1. 在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。

    前往 GKE 叢集

  2. 選取 Google Cloud 專案。

    • 如果「類型」欄顯示「vm Google Distributed Cloud」,表示叢集是由 GKE On-Prem API 管理。

    • 如果「Type」(類型) 欄顯示「External」(外部),表示叢集並非由 GKE On-Prem API 管理。

如要查看叢集的詳細資料,使用者必須登入並驗證叢集。如要這麼做,請按照下列步驟操作:

設定驗證方法

如先前所述,所有機群叢集都會顯示在控制台的 GKE 和 GKE Enterprise 叢集清單中。不過,如要查看節點和工作負載等更多詳細資料 (以及在啟用這項功能後執行叢集生命週期管理工作),使用者必須登入並驗證叢集。如要執行這項操作,您必須使用下列其中一種驗證方法設定已註冊的叢集:

  • Google 身分:使用者可以透過Google Cloud 身分登入,也就是與Google Cloud 帳戶相關聯的電子郵件地址。如果使用者已透過 Google 身分存取Google Cloud ,請使用這個選項。如果您在控制台中建立叢集,可以使用 Google 身分登入叢集,但必須為其他使用者設定驗證。

    使用 Google 身分登入是控制台中最簡單的驗證方法,特別是當您嘗試使用最少的安裝項目試用 Google Distributed Cloud 時。因此,我們在下方的「設定 Google 身分驗證」一節中,詳細說明如何設定這項功能。

  • OpenID Connect (OIDC):使用者可透過這個選項,使用第三方 OIDC 識別資訊提供者 (例如 Okta 或 Microsoft AD FS) 的身分,從控制台登入叢集。如果使用者在供應商處已有使用者名稱、密碼和安全性群組成員資格,建議使用這個選項。如要瞭解如何為叢集設定第三方 OIDC 驗證,請參閱下列指南:

  • 不記名權杖:如果上述 Google 提供的解決方案不適合貴機構,您可以設定 Kubernetes 服務帳戶的驗證,並使用該帳戶的不記名權杖登入。詳情請參閱「使用不記名權杖設定」。

授予必要角色

控制台的存取權由 Identity and Access Management (IAM) 管理。無論選擇哪種驗證方法,都必須具備這些 IAM 角色。如要在控制台中管理叢集生命週期,您需要授予部分 IAM 角色。

  • 如要讓使用者存取主控台,至少需要授予下列角色:

    • roles/container.viewer。使用者可透過這個角色在主控台中查看 GKE 叢集頁面和其他容器資源。如要進一步瞭解這個角色包含的權限,或授予具有讀取/寫入權限的角色,請參閱 IAM 說明文件中的「Kubernetes Engine 角色」。

    • roles/gkehub.viewer。使用者可透過這個角色在控制台中查看外部叢集。Google Cloud 如要進一步瞭解這個角色包含的權限,或授予具備讀取/寫入權限的角色,請參閱 IAM 說明文件中的「GKE Hub 角色」。

  • 如要讓使用者在主控台中管理叢集生命週期,請授予 roles/gkeonprem.admin IAM 角色。使用者取得 roles/gkeonprem.admin角色後,即可透過管理控制台存取 GKE On-Prem API,管理叢集生命週期。如要進一步瞭解這個角色包含的權限,請參閱 IAM 說明文件中的「GKE On-Prem 角色」。

下列指令顯示如何授予管理主控台叢集生命週期所需的最低角色:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/container.viewer

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkehub.viewer

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkeonprem.admin

其中:

  • FLEET_HOST_PROJECT_ID 是機群主專案。如果是使用 gkectl 建立的叢集,這個專案就是您在使用者叢集設定檔的 gkeConnect 區段中設定的專案。如果是透過控制台建立的叢集,這個專案就是您在建立叢集時選擇的專案。

  • MEMBER 是使用者的電子郵件地址,格式為 user:emailID,例如:user:alice@example.com

在控制台中啟用叢集生命週期管理

使用標準工具 (控制台、gcloud CLI 或 Terraform) 建立的使用者叢集會自動註冊 GKE On-Prem API,讓您在控制台中執行叢集生命週期管理工作。如要為使用 gkectl 建立的使用者叢集啟用這項功能,請按照「設定由 GKE On-Prem API 管理的使用者叢集」一文中的步驟操作。啟用叢集生命週期管理後,您可以在控制台中執行下列工作:

設定 Google 身分驗證

如要讓使用者透過 Google 帳戶登入叢集,請設定下列項目:

設定 RBAC 授權

每個叢集的 Kubernetes API 伺服器都必須能夠授權來自控制台的要求。如要設定授權,您需要在每個叢集上設定 Kubernetes 角色型存取權控管 (RBAC) 政策。

如果您使用標準工具建立使用者叢集,系統可能已授予適當的 RBAC 政策,讓您擁有叢集的完整管理存取權。在下列情況下,GKE On-Prem API 會自動將您的 Google 帳戶新增為管理員:

  • 您已在控制台中建立使用者叢集。

  • 您使用 gcloud CLI 建立使用者叢集,且 Google 帳戶是在叢集建立指令的 --admin-users 標記中指定。

  • 您使用 Terraform 建立使用者叢集,且 Google 帳戶已在 authorization.admin_users.username 欄位中指定。

使用 gkectl 建立的使用者叢集不會授予 RBAC 政策,因此您無法使用控制台管理叢集。叢集建立完成後,您必須自行新增。無論使用哪種工具建立叢集,您都可以在叢集建立後新增其他管理員。

您可以透過下列任一方式,授予叢集的管理存取權。提供兩種不同的 gcloud 指令。

  • gcloud ... generate-gateway-rbac 指令必須在管理員工作站上執行,因為該指令需要存取叢集的 kubeconfig 和環境 (通常只在管理員工作站上)。您可以使用 generate-gateway-rbac 指令自訂 RBAC 政策,但使用者電子郵件地址不會在控制台的「叢集詳細資料」部分顯示為管理員。

  • 您可以在管理員工作站或任何可存取 GKE On-Prem API 的電腦上執行 gcloud ... update 指令。

generate-gateway-rbac

  1. 連線至管理工作站。

  2. 執行下列指令來更新元件:

    gcloud components update
    
  3. 為使用者和服務帳戶產生並套用叢集的 RBAC 政策:

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=MEMBERSHIP_NAME \
        --role=ROLE \
        --users=USERS \
        --project=FLEET_HOST_PROJECT_ID \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT \
        --apply
    

    更改下列內容:

    • MEMBERSHIP_NAME:用於在叢集機群中代表叢集的專屬名稱。在 Google Distributed Cloud 中,成員名稱和叢集名稱相同。
    • ROLE:您要在叢集上授予使用者的 Kubernetes 角色。如要授予使用者叢集中所有命名空間內所有資源的完整存取權,請指定 clusterrole/cluster-admin。如要提供唯讀存取權,請指定 clusterrole/view。您也可以建立自訂角色,例如:role/mynamespace/namespace-reader。執行指令前,自訂角色必須已存在。
    • USERS:以半形逗號分隔的清單,列出要授予權限的使用者 (使用者帳戶或服務帳戶) 電子郵件地址。例如: --users=foo@example.com,test-acct@test-project.iam.gserviceaccount.com
    • FLEET_HOST_PROJECT_ID:機群主專案的專案 ID。
    • KUBECONFIG_PATH:儲存 kubeconfig 的本機路徑,其中包含叢集的項目。
    • KUBECONFIG_CONTEXT:叢集的內容,因為其出現在 kubeconfig 檔案中。如要從指令列取得目前的環境,請執行 kubectl config current-context。無論是否使用目前的內容,請執行簡單的指令 (例如):

      kubectl get namespaces \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT

    執行 gcloud container fleet memberships generate-gateway-rbac 後,輸出內容結尾會顯示類似下列的內容,為了方便閱讀,部分內容已遭截斷:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    Applying the generate RBAC policy to cluster with kubeconfig: /usr/local/google/home/foo/.kube/config, context: kind-kind
    Writing RBAC policy for user: foo@example.com to cluster.
    Successfully applied the RBAC policy to cluster.
    

    這是透過 Connect 閘道存取叢集的環境。

    如要進一步瞭解 generate-gateway-rbac 指令,請參閱 gcloud CLI 參考指南

update

  1. 執行下列指令來更新元件:

    gcloud components update
    
  2. 為需要獲派 clusterrole/cluster-admin 角色的每位使用者加入 --admin-users 旗標,然後執行下列指令。 您無法在單一旗標中指定多位使用者。請務必在指令中加入 Google 帳戶,因為指令會使用您在指令中指定的使用者,覆寫授權清單。

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --admin-users YOUR_GOOGLE_ACCOUNT \
      --admin-users ADMIN_GOOGLE_ACCOUNT_1 \
    

除了授予 Kubernetes clusterrole/cluster-admin 角色,這項指令也會授予使用者透過 Connect 閘道存取叢集所需的 RBAC 政策。

控制台

如要將 RBAC 政策套用至使用者,請在控制台中執行下列步驟:

  1. 在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。

    前往 GKE 叢集

  2. 選取使用者叢集所在的 Google Cloud 專案。

  3. 在叢集清單中,按一下叢集名稱即可顯示詳細資料。

  4. 在「授權」部分,按一下「管理員使用者」編輯按鈕。

  5. 在「編輯授權」面板中,輸入要新增為叢集管理員的使用者電子郵件地址。如要新增其他管理員使用者,請按一下「新增管理員使用者」

  6. 使用者新增完畢後,請按一下「儲存變更」

更多資訊