本文說明如何使用 gdcloud CLI,管理 Google Distributed Cloud (GDC) Air-gapped 中標準叢集的權限。標準叢集屬於專案範圍,是可設定的 Kubernetes 環境,預設服務最少,可為自訂工作負載提供更大的彈性和控制權。
如要進一步瞭解標準叢集和其他叢集類型,請參閱「Kubernetes 叢集設定」。
本頁面適用於應用程式運算子群組中的對象,例如開發人員運算或資料科學家,他們需要管理及保護 GDC 專案中的資源。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。
事前準備
- 請組織 IAM 管理員授予您專案 IAM 管理員 (
project-iam-admin) 角色。如要進一步瞭解角色,請參閱「角色定義」一文。 - 如果尚未安裝,請安裝 gdcloud CLI。
授予標準叢集存取權的權限
具有專案 IAM 管理員 (project-iam-admin) 角色的使用者會執行下列步驟,將管理標準叢集存取權所需的角色授予其他使用者:
使用 gcloud CLI 登入已設定的識別資訊提供者。
授予使用者專案的叢集管理員 (
cluster-admin) 角色。這個指令會將使用者繫結至角色,讓他們管理標準叢集內的存取權。如要進一步瞭解角色,請參閱「預先定義的角色說明」和「專案的角色定義」。
gdcloud projects add-iam-policy-binding PROJECT \ --role=ROLE \ --member=user:USER_ACCOUNT請替換下列變數:
PROJECT:標準叢集所在的專案名稱。ROLE:要授予的角色名稱 (例如cluster-admin或cluster-developer)。USER_ACCOUNT:要授予角色的使用者帳戶,包括與貴機構相關聯的識別資訊提供者前置字元 (例如idpprefix-user@example.com)。具體使用的前置字元取決於貴機構的 IdP 設定。詳情請參閱「連線至識別資訊提供者」。
以下範例會將叢集管理員角色授予
user@example.com,假設專案foo的身分識別提供者前置字元為fop-:gdcloud projects add-iam-policy-binding foo \ --role=cluster-admin \ --member=user:fop-user@example.com
管理標準叢集內的存取權
獲派 cluster-admin 角色的使用者會執行下列步驟:
使用 gdcloud CLI 透過已設定的識別資訊提供者登入。
使用
--standard旗標,為標準叢集產生 kubeconfig 檔案。如要指定標準叢集,就必須設定這個旗標。export KUBECONFIG=KUBECONFIG_FILE gdcloud get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT請替換下列變數:
KUBECONFIG_FILE:kubeconfig 檔案的路徑,例如standard-cluster-kubeconfig.yaml。STANDARD_CLUSTER_NAME:標準叢集的名稱。PROJECT:標準叢集所在的專案名稱。
使用
kubectl在標準叢集中定義權限。擁有
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