本文說明如何使用 gdcloud CLI,管理 Google Distributed Cloud (GDC) 氣隙環境中標準叢集的權限。標準叢集是專案範圍內的 Kubernetes 環境,可供設定,且預設服務最少,能為自訂工作負載提供更大的彈性和控制權。
如要進一步瞭解標準叢集和其他叢集類型,請參閱「Kubernetes 叢集設定」。
本文適用於應用程式運算子群組中的對象,例如開發人員作業或資料科學家,他們需要管理及保護 GDC 專案中的資源。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。
事前準備
管理標準叢集的存取權前,您必須具備必要權限並準備好環境。
要求 IAM 角色
請與機構 IAM 管理員聯絡,並根據您需要執行的工作要求下列角色:
- 專案 IAM 管理員 (
project-iam-admin):在專案中建立、更新及刪除標準叢集的角色繫結。 - 標準叢集管理員 (
standard-cluster-admin):在特定標準叢集中建立、更新及刪除角色繫結。
準備環境
授予標準叢集存取權的權限
具有專案 IAM 管理員 (project-iam-admin) 角色的使用者,可以授予其他使用者管理標準叢集存取權的必要角色:
使用 gcloud CLI登入已設定的識別資訊提供者。
將專案的標準叢集管理員 (
standard-cluster-admin) 角色授予使用者。這項指令會將使用者繫結至角色,讓使用者管理標準叢集內的存取權。如要進一步瞭解角色,請參閱「預先定義的角色說明」和「專案的角色定義」。
gdcloud projects add-iam-policy-binding PROJECT \ --role=ROLE \ --member=user:USER_ACCOUNT請替換下列變數:
PROJECT:標準叢集所在的專案名稱。ROLE:要授予的角色名稱 (例如standard-cluster-admin)。USER_ACCOUNT:要授予角色的使用者帳戶,包括與貴機構相關聯的識別資訊提供者前置字元 (例如idpprefix-user@example.com)。具體使用的前置字元取決於貴機構的 IdP 設定。詳情請參閱「連線至識別資訊提供者」。
以下範例會將標準叢集管理員角色授予
user@example.com,假設專案foo的身分識別提供者前置字元為fop-:gdcloud projects add-iam-policy-binding foo \ --role=standard-cluster-admin \ --member=user:fop-user@example.com
管理標準叢集內的存取權
具備標準叢集管理員 (standard-cluster-admin) 角色的使用者可以在標準叢集中授予存取權:
使用 gcloud CLI登入已設定的識別資訊提供者。
使用
--standard旗標為標準叢集產生 kubeconfig 檔案。如要指定標準叢集,就必須設定這個旗標。export KUBECONFIG=KUBECONFIG_FILE gdcloud clusters get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT請替換下列變數:
KUBECONFIG_FILE:kubeconfig 檔案的路徑,例如standard-cluster-kubeconfig.yaml。STANDARD_CLUSTER_NAME:標準叢集的名稱。PROJECT:標準叢集所在的專案名稱。
使用
kubectl在標準叢集中定義權限。擁有
standard-cluster-admin權限的使用者可以建立自訂Role和ClusterRole物件。如要授予這些權限,管理員可以建立對應的Rolebinding和ClusterRoleBinding物件,將角色繫結至特定主體,例如使用者或服務帳戶。下列範例使用
kubectl,在test命名空間中建立名為test-role的自訂Role範例:kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: test-role namespace: test rules: - apiGroups: - "" resources: - configmaps verbs: - get EOF下列範例會在
test命名空間中,為名為test-role的Role建立RoleBinding。這會將權限授予身分提供者前置字串為fop-的使用者 alice@example.com,以及default命名空間中名為my-service-account的ServiceAccount:kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: test-role-binding namespace: test subjects: - kind: User name: fop-alice@example.com apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: my-service-account namespace: default roleRef: kind: Role name: test-role apiGroup: rbac.authorization.k8s.io EOF