本文說明如何透過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 叢集」頁面會顯示所有叢集。這樣一來,您就能掌握整個機群的概況,並在 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 身分:這個選項可讓您使用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.adminIAM 角色。使用者取得- 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 建立使用者叢集,且 Google 帳戶已在 - authorization.admin_users.username欄位中指定。
- 您已使用 - 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 專案。 
- 在叢集清單中,按一下叢集名稱,然後按一下「詳細資料」面板中的「查看詳細資料」。 
- 在「授權」部分,按一下「管理員使用者」欄位,然後輸入每位使用者的電子郵件地址。 
- 使用者新增完畢後,請按一下「完成」。