本文說明如何在 Google Distributed Cloud (GDC) 實體隔離環境的標準叢集中授予存取權及管理權限。標準叢集屬於專案範圍,是可設定的 Kubernetes 環境,內含最少的預設服務,可為自訂工作負載提供更大的彈性和控制權。
如要瞭解如何管理 Standard 叢集生命週期 (例如建立或刪除叢集),請參閱「建立 Standard 叢集」和「刪除 Standard 叢集」。
如要進一步瞭解標準叢集和其他叢集類型,請參閱「Kubernetes 叢集設定」。
這份文件適用於應用程式運算子群組中的對象,例如開發人員作業或資料科學家,他們需要在 GDC 專案中管理及保護資源。詳情請參閱「GDC air-gapped 說明文件適用對象」。
事前準備
管理標準叢集的存取權前,您必須具備必要的權限,並準備好環境。
要求 IAM 角色
如要取得管理標準叢集存取權所需的權限,請根據您需要執行的工作要求下列角色:
- 如要授予及管理標準叢集的專案層級 IAM 政策繫結,請聯絡 IAM 組織管理員,要求「IAM 專案管理員」(
project-iam-admin) 角色。 - 如要在標準叢集中管理叢內 Kubernetes 角色型存取權控管 (RBAC) 並部署工作負載,請要求 IAM 專案管理員授予您「叢集管理員」 (
cluster-admin) 角色。
準備環境
授予標準叢集存取權
具備 IAM 專案管理員 (project-iam-admin) 角色的使用者,可以授予其他使用者管理標準叢集存取權的必要角色:
使用 gdcloud CLI 透過已設定的識別資訊提供者登入。
授予使用者專案的叢集管理員 (
cluster-admin) 角色。 這項指令會將使用者繫結至角色,讓使用者管理標準叢集內的存取權。如要進一步瞭解角色,請參閱「預先定義的角色說明」和「專案的角色定義」。
gdcloud projects add-iam-policy-binding PROJECT \ --role=ROLE \ --member=user:USER_ACCOUNT請替換下列變數:
PROJECT:標準叢集所在的專案名稱。ROLE:要授予的角色名稱 (例如cluster-admin)。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 clusters 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