我刚刚使用运行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)
任何帮助将不胜感激,因为这阻止我创建我的集群服务所需的权限。
Janos的答案适用于使用密码创建的GKE集群,但我建议尽可能避免使用该密码(或创建没有密码的GKE集群)。
使用IAM:要创建ClusterRoleBinding
,调用者必须具有container.clusterRoleBindings.create
权限。只有OWNER
和Kubernetes Engine Admin
IAM角色包含该权限(因为它允许修改GKE集群上的访问控制)。
因此,要允许[email protected]
运行该命令,必须授予其中一个角色。例如。:
gcloud projects add-iam-policy-binding $PROJECT \
--member=user:[email protected] \
--role=roles/container.admin
如果您的kubeconfig是由gcloud
自动创建的,那么您的用户就不是所有强大的管理员用户 - 您正在尝试为其创建绑定。
在群集上使用gcloud container clusters describe <clustername> --zone <zone>
并查找password
字段。
此后执行kubectl --username=admin --password=FROMABOVE create clusterrolebinding ...