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

rmt*_*zie 15 permissions google-cloud-platform kubernetes google-kubernetes-engine

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

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

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=<user-name>]
Run Code Online (Sandbox Code Playgroud)

但是,由于缺少权限,这会失败(我假设这些权限与我们尝试通过运行上述命令授予的权限完全相同).

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)
Run Code Online (Sandbox Code Playgroud)

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

Jan*_*art 32

如果您的kubeconfig是自动创建的,gcloud那么您的用户就不是全功能的管理员用户 - 您正在尝试为其创建绑定.

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

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


CJ *_*len 20

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

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

因此,要允许person@company.com运行该命令,必须授予它们其中一个角色.例如:

gcloud projects add-iam-policy-binding $PROJECT \
  --member=user:person@company.com \
  --role=roles/container.admin
Run Code Online (Sandbox Code Playgroud)