群集管理员的GKE clusterrolebinding失败,出现权限错误

问题描述 投票:15回答:2

我刚刚使用运行Kubernetes 1.7.5的Google容器引擎创建了一个新的群集,并启用了新的RBAC权限。我遇到了为我的一些服务分配权限的问题,这些问题引导我进行以下操作:

使用RBAC状态的容器引擎的docs必须通过运行以下命令授予用户创建授权角色的能力:

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=<user-name>]

但是,由于缺少权限(我假设是通过运行上述命令尝试授予的权限非常相同),这会失败。

Error from server (Forbidden): 
User "<user-name>" cannot create clusterrolebindings.rbac.authorization.k8s.io at the cluster scope.: 
  "Required \"container.clusterRoleBindings.create\" permission." 
  (post clusterrolebindings.rbac.authorization.k8s.io)

任何帮助将不胜感激,因为这阻止我创建我的集群服务所需的权限。

permissions kubernetes google-cloud-platform google-kubernetes-engine
2个回答
20
投票

Janos的答案适用于使用密码创建的GKE集群,但我建议尽可能避免使用该密码(或创建没有密码的GKE集群)。

使用IAM:要创建ClusterRoleBinding,调用者必须具有container.clusterRoleBindings.create权限。只有OWNERKubernetes Engine Admin IAM角色包含该权限(因为它允许修改GKE集群上的访问控制)。

因此,要允许[email protected]运行该命令,必须授予其中一个角色。例如。:

gcloud projects add-iam-policy-binding $PROJECT \
  --member=user:[email protected] \
  --role=roles/container.admin

31
投票

如果您的kubeconfig是由gcloud自动创建的,那么您的用户就不是所有强大的管理员用户 - 您正在尝试为其创建绑定。

在群集上使用gcloud container clusters describe <clustername> --zone <zone>并查找password字段。

此后执行kubectl --username=admin --password=FROMABOVE create clusterrolebinding ...

© www.soinside.com 2019 - 2024. All rights reserved.