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

时间:2017-09-19 18:20:36

标签: permissions kubernetes google-cloud-platform google-kubernetes-engine

我刚刚使用运行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)

我们非常感谢任何帮助,因为这阻止了我创建群集服务所需的权限。

2 个答案:

答案 0 :(得分:31)

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

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

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

答案 1 :(得分:20)

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

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

因此,要允许person@company.com运行该命令,必须授予其中一个角色。 E.g:

gcloud projects add-iam-policy-binding $PROJECT \
  --member=user:person@company.com \
  --role=roles/container.admin