本文說明如何透過 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)。
如要查看機群叢集,請按照下列步驟操作:
在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取 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 驗證,請參閱下列指南:
使用 OIDC 設定 GKE Identity Service 的叢集: 本指南說明如何以叢集為單位,在叢集上設定 OIDC 驗證。
為機群設定 GKE Identity Service: 這個選項可讓您在機群層級設定 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 帳戶登入叢集,請設定下列項目:
使用者必須具備特定 Identity and Access Management (IAM) 角色,才能在控制台的 GKE 叢集清單中查看及操作叢集。
使用者必須新增至 Kubernetes 角色型存取權控管 (RBAC) 政策,Connect 閘道才能透過 Connect 代理程式存取叢集的 Kubernetes API 伺服器。
設定 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
連線至管理工作站。
執行下列指令來更新元件:
gcloud components update
為使用者和服務帳戶產生並套用叢集的 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
執行下列指令來更新元件:
gcloud components update
為需要獲派
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 政策套用至使用者,請在控制台中執行下列步驟:
在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取使用者叢集所在的 Google Cloud 專案。
在叢集清單中,按一下叢集名稱即可顯示詳細資料。
在「授權」部分,按一下「管理員使用者」編輯按鈕。
在「編輯授權」面板中,輸入要新增為叢集管理員的使用者電子郵件地址。如要新增其他管理員使用者,請按一下「新增管理員使用者」。
使用者新增完畢後,請按一下「儲存變更」。