本文档介绍了如何使用 gdcloud CLI 管理 Google Distributed Cloud (GDC) 空气隔离环境中标准集群的权限。标准集群是项目级、可配置的 Kubernetes 环境,具有最少的默认服务,可为自定义工作负载提供更高的灵活性和控制力。
如需详细了解标准集群和其他集群类型,请参阅 Kubernetes 集群配置。
本页面适用于应用运维人员群组(例如开发者运维人员或数据科学家)中的受众群体,他们需要管理和保护 GDC 项目中的资源。如需了解详情,请参阅 GDC 气隙环境文档的受众群体。
准备工作
- 请让您的组织 IAM 管理员向您授予 Project IAM Admin (
project-iam-admin) 角色。如需详细了解角色,请参阅角色定义。 - 安装 gdcloud CLI(如果尚未安装)。
授予标准集群访问权限
具有 Project IAM Admin (project-iam-admin) 角色的用户执行以下步骤,以向其他用户授予在标准集群中管理访问权限所需的角色:
使用 gdcloud CLI 通过已配置的身份提供方登录。
为用户授予项目的 Cluster Admin (
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授予 Cluster Admin 角色,假设项目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