本文档介绍了如何在 Google Distributed Cloud (GDC) 气隙环境中的标准集群内授予访问权限和管理权限。标准集群是项目级可配置的 Kubernetes 环境,具有最少的默认服务,可为自定义工作负载提供更高的灵活性和控制力。
如需了解如何管理标准集群生命周期(例如创建或删除集群),请参阅创建标准集群和删除标准集群。
如需详细了解标准集群和其他集群类型,请参阅 Kubernetes 集群配置。
本文档面向应用运营人员群组(例如开发运维人员或数据科学家),他们需要管理和保护 GDC 项目中的资源。如需了解详情,请参阅 GDC 气隙环境文档的受众群体。
准备工作
在管理对标准集群的访问权限之前,您必须拥有必要的权限并准备好环境。
申请 IAM 角色
如需获得管理标准集群访问权限所需的权限,请根据您需要执行的任务请求以下角色:
- 如需为标准集群授予和管理项目级 IAM 政策绑定,请与您的 IAM 组织管理员联系,请求 IAM Project Admin (
project-iam-admin) 角色。 - 如需管理集群内 Kubernetes 基于角色的访问权限控制 (RBAC) 并在标准集群内部署工作负载,请让您的 IAM 项目管理员为您授予集群管理员 (
cluster-admin) 角色。
准备环境
授予标准集群访问权限
具有 IAM 项目管理员 (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)。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 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