本文档介绍了如何使用 gdcloud CLI 管理 Google Distributed Cloud (GDC) 气隙环境中标准集群的权限。标准集群是项目范围的可配置 Kubernetes 环境,具有最少的默认服务,可为自定义工作负载提供更大的灵活性和控制力。
如需详细了解标准集群和其他集群类型,请参阅 Kubernetes 集群配置。
本文档面向应用运维人员组内的受众,例如开发运维人员或数据科学家,他们需要管理和保护 GDC 项目中的资源。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众。
准备工作
在管理对标准集群的访问权限之前,您必须拥有必要的权限并准备好环境。
请求 IAM 角色
请与您的组织 IAM 管理员联系,以根据您需要执行的任务请求以下角色:
- Project IAM Admin (
project-iam-admin):为项目中的标准集群创建、更新和删除角色绑定。 - Standard Cluster Admin (
standard-cluster-admin):在特定标准集群中创建、更新和删除角色绑定。
准备环境
授予标准集群访问权限
具有 Project IAM Admin (project-iam-admin) 角色的用户可以向其他用户授予在标准集群中管理访问权限所需的角色:
使用配置的身份提供方登录 使用 gdcloud CLI。
为用户授予项目的 Standard Cluster Admin (
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 配置。如需了解详情,请参阅 连接到身份提供方 。
以下示例假定身份提供方前缀为
fop-,并为项目foo中的user@example.com授予 Standard Cluster Admin 角色:gdcloud projects add-iam-policy-binding foo \ --role=standard-cluster-admin \ --member=user:fop-user@example.com
管理标准集群中的访问权限
具有 Standard Cluster Admin (standard-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定义标准集群中的权限。具有
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