我刚刚使用运行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)
我们非常感谢任何帮助,因为这阻止了我创建群集服务所需的权限。
答案 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
权限。只有OWNER
和Kubernetes 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