Google Cloud 控制台可讓您管理使用 Distributed Cloud 軟體建立的管理員和使用者叢集,但僅限裸機。設定驗證和存取控管機制後,您就能登入叢集、查看工作負載、升級管理員和使用者叢集,以及更新或刪除使用者叢集。
機群成員和控制台
所有叢集都必須是機群的成員,機群是一種統一查看及管理多個叢集及其工作負載的方式。每個叢集機群都會與機群主專案建立關聯。
所有叢集都會在建立時註冊至機群:
使用
bmctl建立叢集時,請在叢集設定檔的gkeConnect區段中指定機群主專案。叢集會成為指定專案的機群成員。使用標準 GKE On-Prem API 用戶端 (控制台、Google Cloud CLI 或 Terraform) 建立管理員或使用者叢集時,叢集會成為指定專案中的機群成員。
Google Cloud以外的機群成員 (例如 Google Distributed Cloud) 會顯示在機群主專案的控制台中,以及其他機群叢集 (例如 GKE on Google Cloud)。您可以在控制台管理裸機叢集的程度,取決於下列因素:
如果您已設定驗證,可以登入叢集並查看其工作負載和其他詳細資料。
如果您已為叢集啟用叢集生命週期管理功能,則可透過控制台升級管理員和使用者叢集,以及更新和刪除使用者叢集。如果未啟用這項功能,您只能在管理員工作站上使用
bmctl管理叢集生命週期。
查看已註冊的叢集
所有叢集都會顯示在控制台的「GKE clusters」(GKE 叢集) 頁面中。這可讓您概略瞭解整個機群,並查看哪些 Google Distributed Cloud 叢集是由 GKE On-Prem API 管理。
如要查看機群叢集,請按照下列步驟操作:
在控制台中,前往「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 Identity:這個選項可讓您使用Google Cloud 身分登入,也就是與Google Cloud 帳戶相關聯的電子郵件地址。如果使用者已能透過 Google 身分存取Google Cloud ,請使用這個選項。如果您是在控制台中建立叢集,可以使用 Google Identity 登入叢集,但必須為其他使用者設定驗證機制。
使用 Google Identity 登入是控制台中最簡單的驗證方法,因此我們在「設定 Google Identity 驗證」中詳細說明瞭如何設定。
OpenID Connect (OIDC):這個選項可讓您使用第三方 OIDC 識別資訊提供者 (例如 Okta 或 Microsoft AD FS) 的識別資訊,從控制台登入叢集。如果使用者已有供應商提供的使用者名稱、密碼和安全性群組成員資格,建議您使用這個選項。如要瞭解如何為叢集設定第三方 OIDC 驗證,請參閱下列指南:
使用 OIDC 設定 GKE 身分認證服務叢集:本指南說明如何逐一設定叢集的 OIDC 驗證。
為機群設定 GKE 身分認證服務:這個選項可讓您在機群層級設定 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.adminIAM 角色。roles/gkeonprem.admin角色可授予使用者 GKE On-Prem API 的管理員權限,控制台會使用該 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 Identity 驗證
如要讓使用者透過 Google 身分登入叢集,您必須設定下列項目:
使用者必須具備特定 Identity and Access Management (IAM) 角色,才能在控制台的「GKE clusters」(GKE 叢集) 頁面查看叢集並與其互動。
使用者必須加入 Kubernetes 角色式存取控管 (RBAC) 政策,連結閘道才能使用 Connect 代理程式存取叢集的 Kubernetes API 伺服器。
設定 RBAC 授權
每個叢集的 Kubernetes API 伺服器都必須能授權來自控制台的要求。如要設定授權,您必須為每個叢集的使用者設定 Kubernetes 角色式存取控管 (RBAC) 政策。在下列情況下,您的 Google 帳戶會新增為管理員,並具備使用者叢集的完整存取權:
您在控制台中建立了使用者叢集。
您使用 gcloud CLI 建立使用者叢集,並在叢集建立指令的
--admin-users旗標中指定 Google 帳戶。您使用 Terraform 建立使用者叢集,並在
authorization.admin_users.username欄位中指定 Google 帳戶。您已使用
bmctl建立使用者叢集,並在 clusterSecurity.authorization.clusterAdmin.gcpAccounts 中設定 Google 帳戶。
叢集建立後,您可以新增其他管理員。您可以透過下列任一方式,授予叢集的管理員權限。系統會提供兩個不同的 gcloud 指令。
gcloud ... generate-gateway-rbac指令必須在管理員工作站上執行,因為指令需要存取叢集的 kubeconfig 和內容 (通常僅位於管理員工作站)。generate-gateway-rbac指令可讓您自訂 RBAC 政策,但使用者的電子郵件地址不會顯示為控制台「Cluster Details」(叢集詳細資料) 專區中的管理員。gcloud ... update指令可在管理員工作站或任何可存取 GKE On-Prem API 的電腦上執行。
請注意,如果您在 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 專案。
在叢集清單中,按一下叢集名稱,然後點選「Details」(詳細資料) 面板中的「View details」(查看詳細資料)。
在「Authorization」(授權) 部分,按一下「Admin users」(管理員使用者) 欄位,然後輸入每位使用者的電子郵件地址。
使用者新增完畢後,請點按「完成」。