本文說明如何透過Google Cloud 控制台,管理使用 Google Distributed Cloud 軟體在裸機上建立的管理員和使用者叢集。叢集管理功能包括登入叢集、查看工作負載、升級、更新及刪除叢集。
車隊成員和控制台
所有叢集都必須是機群的成員,這樣才能以統一的方式查看及管理多個叢集和工作負載。每個叢集機群都會與機群主專案建立關聯。
所有叢集都會在建立時註冊至機群:
使用
bmctl
建立叢集時,請在叢集設定檔的gkeConnect
區段中指定機群主專案。叢集會成為指定專案的機群成員。使用標準 GKE On-Prem API 用戶端 (主控台、Google Cloud CLI 或 Terraform) 建立管理員或使用者叢集時,叢集會成為指定專案中的 Fleet 成員。
Google Cloud以外的機群成員 (例如 Google Distributed Cloud) 會顯示在機群主專案的控制台中,以及其他機群叢集 (例如 GKE on Google Cloud)。您可透過控制台管理裸機叢集的程度,取決於下列因素:
設定驗證後,即可登入叢集,並查看工作負載和其他詳細資料。
如果已為叢集啟用叢集生命週期管理,您可以使用控制台升級管理員和使用者叢集,也可以使用控制台更新及刪除使用者叢集。如果未啟用這項功能,您只能使用管理工作站上的
bmctl
管理叢集生命週期。
查看已註冊的叢集
主控台的「GKE 叢集」頁面會顯示所有叢集。您不僅可以概覽整個機群,還能查看哪些叢集是由 GKE On-Prem API 管理 (適用於 Google Distributed Cloud)。
如要查看機群叢集,請按照下列步驟操作:
在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取 Google Cloud 專案。
如果「Type」(類型) 欄顯示「Bare metal」(裸機),表示叢集是由 GKE On-Prem API 管理。請注意,只有管理員和使用者叢集可透過 GKE On-Prem API 管理。
如果「Type」(類型) 欄顯示「External」(外部),表示叢集並非由 GKE On-Prem API 管理。
如要查看叢集的詳細資料,您必須登入並通過叢集的驗證程序。如要這麼做,請按照下列步驟操作:
設定驗證方法
如先前所述,所有叢集都會顯示在控制台的 GKE 叢集頁面。不過,如要查看節點和工作負載等詳細資料 (以及在啟用這項功能後執行叢集生命週期管理工作),您必須登入並通過叢集驗證。如要執行這項操作,您必須使用下列其中一種驗證方法設定叢集:
Google 身分:這個選項可讓您使用Google Cloud 身分登入,也就是與帳戶相關聯的電子郵件地址。Google Cloud 如果使用者已透過 Google 身分存取Google Cloud ,請使用這個選項。如果您在控制台中建立叢集,可以使用 Google 身分登入叢集,但必須為其他使用者設定驗證。
使用 Google 身分登入是控制台最簡單的驗證方法,因此我們在「設定 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 角色授予非專案擁有者的使用者:
如要讓使用者存取主控台,至少需要授予下列角色:
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 PROJECT_ID \ --member=MEMBER \ --role=roles/container.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER \ --role=roles/gkehub.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER \ --role=roles/gkeonprem.admin
其中:
PROJECT_ID
是機群主專案。如果是使用bmctl
建立的叢集,這個專案就是您在使用者叢集設定檔的gkeConnect
區段中設定的專案。如果是透過控制台建立的叢集,這個專案就是您在建立叢集時選擇的專案。MEMBER
是使用者的電子郵件地址,格式為user:emailID
,例如:user:alice@example.com
在控制台中啟用叢集生命週期管理
使用標準工具 (控制台、gcloud CLI 或 Terraform) 建立的管理員和使用者叢集,會自動註冊 GKE On-Prem API,讓您在控制台中執行叢集生命週期管理工作。在 Google Distributed Cloud 1.16 以上版本中,使用 bmctl
建立使用者和管理員叢集時,系統預設會向 GKE On-Prem API 註冊這些叢集。如要在 GKE On-Prem API 中註冊叢集,請按照「設定叢集,以便透過 GKE On-Prem API 管理」一文中的步驟操作。
設定 Google 身分驗證
如要讓使用者透過 Google 帳戶登入叢集,請設定下列項目:
使用者必須具備特定 Identity and Access Management (IAM) 角色,才能在「GKE 叢集」頁面中查看及操作叢集。
使用者必須新增至 Kubernetes 角色型存取權控管 (RBAC) 政策,連線閘道才能使用 Connect 代理程式存取叢集的 Kubernetes API 伺服器。
設定 RBAC 授權
每個叢集的 Kubernetes API 伺服器都必須能夠授權來自控制台的要求。如要設定授權,您必須為每個叢集的使用者設定 Kubernetes 角色型存取權控管 (RBAC) 政策。在下列情況下,您的 Google 帳戶會以管理員身分新增至使用者叢集,並具備完整存取權:
您已在控制台中建立使用者叢集。
您使用 gcloud CLI 建立使用者叢集,且 Google 帳戶是在叢集建立指令的
--admin-users
標記中指定。您使用 Terraform 建立使用者叢集,並在
authorization.admin_users.username
欄位中指定 Google 帳戶。您使用
bmctl
建立使用者叢集,並在 clusterSecurity.authorization.clusterAdmin.gcpAccounts 中設定 Google 帳戶。
叢集建立完成後,您可以新增其他管理員。您可以透過下列任一方式授予叢集管理存取權。提供兩種不同的 gcloud
指令。
gcloud ... generate-gateway-rbac
指令必須在管理員工作站上執行,因為該指令需要存取叢集的 kubeconfig 和環境 (通常只在管理員工作站上)。您可以使用generate-gateway-rbac
指令自訂 RBAC 政策,但使用者電子郵件地址不會在控制台的「叢集詳細資料」部分顯示為管理員。您可以在管理員工作站或任何可存取 GKE On-Prem API 的電腦上執行
gcloud ... update
指令。
請注意,如果您在 Google Cloud 控制台中建立管理員叢集,系統會授予該叢集的唯讀存取權。如要取得 clusterrole/cluster-admin
角色,必須由具備該角色的使用者透過 gcloud ... generate-gateway-rbac
指令新增您。
generate-gateway-rbac
如要將 RBAC 政策套用至使用者,請在管理工作站上執行下列步驟:
執行下列指令來更新元件 (如有需要):
gcloud components update
為使用者和服務帳戶產生並套用叢集的 RBAC 政策:
gcloud container fleet memberships generate-gateway-rbac \ --membership=MEMBERSHIP_NAME \ --role=ROLE \ --users=USERS \ --project=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=222larabrown@gmail.com,test-acct@test-project.iam.gserviceaccount.com
。 - 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.
這是透過連線閘道存取叢集的環境。
如要進一步瞭解
generate-gateway-rbac
指令,請參閱 gcloud CLI 參考指南。
update
執行下列指令來更新元件:
gcloud components update
為需要獲派
clusterrole/cluster-admin
角色的每位使用者加入--admin-users
旗標,然後執行下列指令。 您無法在單一旗標中指定多位使用者。請務必在指令中加入 Google 帳戶,因為指令會使用您在指令中指定的使用者,覆寫授權清單。gcloud container bare-metal clusters update USER_CLUSTER_NAME \ --admin-users YOUR_GOOGLE_ACCOUNT \ --admin-users ADMIN_GOOGLE_ACCOUNT_1 \
除了授予 Kubernetes clusterrole/cluster-admin
角色,這項指令也會授予使用者透過 Connect 閘道存取叢集所需的 RBAC 政策。
bmctl
如要將 RBAC 政策套用至使用者,請在管理工作站上執行下列步驟:
在叢集設定檔中新增
clusterSecurity.authorization
區段。指定您的電子郵件地址,以及需要管理叢集的其他使用者電子郵件地址。例如:... clusterSecurity: authorization: clusterAdmin: gcpAccounts: [alex@example.com,hao@example.com,sasha@example.com] ...
更新叢集:
bmctl update cluster \ -c CLUSTER_NAME \ --kubeconfig=KUBECONFIG
進行下列變更:
- 將 CLUSTER_NAME 替換為要更新的叢集名稱。
- 如果叢集是自我管理叢集 (例如管理員或獨立叢集),請將 KUBECONFIG 替換為叢集 kubeconfig 檔案的路徑。如果叢集是使用者叢集,請將 KUBECONFIG 替換為管理員叢集的 kubeconfig 檔案路徑。
主控台
如要將 RBAC 政策套用至使用者,請在控制台中執行下列步驟:
在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取使用者叢集所在的 Google Cloud 專案。
在叢集清單中,按一下叢集名稱,然後按一下「詳細資料」面板中的「查看詳細資料」。
在「授權」部分,按一下「管理員使用者」欄位,然後輸入每位使用者的電子郵件地址。
使用者新增完畢後,請按一下「完成」。