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

Permissions 群集管理的GKE clusterrolebinding失败,出现权限错误,permissions,kubernetes,google-cloud-platform,google-kubernetes-engine,Permissions,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我刚刚使用运行Kubernetes 1.7.5的Google容器引擎创建了一个新集群,启用了新的RBAC权限。我在为我的某些服务分配权限时遇到问题,导致我出现以下问题: 用于将容器引擎与RBAC一起使用的命令声明,必须通过运行以下命令授予用户创建授权角色的能力: kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=<user-name>] kubect

我刚刚使用运行Kubernetes 1.7.5的Google容器引擎创建了一个新集群,启用了新的RBAC权限。我在为我的某些服务分配权限时遇到问题,导致我出现以下问题:

用于将容器引擎与RBAC一起使用的命令声明,必须通过运行以下命令授予用户创建授权角色的能力:

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=<user-name>]
kubectl创建clusterrolebinding集群管理绑定--clusterrole=cluster admin[--user=]
但是,由于缺少权限(我假设权限与我们试图通过运行上述命令授予的权限完全相同),这会失败

服务器错误(禁止): 用户“”无法在群集范围内创建clusterrolebindings.rbac.authorization.k8s.io: “必需的\”容器。clusterRoleBindings。创建\”权限。” (post clusterrolebindings.rbac.authorization.k8s.io)
任何帮助都将不胜感激,因为这将阻止我创建群集服务所需的权限。

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

在集群上使用,并查找
密码
字段


然后执行
kubectl--username=admin--password=fromUpper create clusterrolebinding…

Janos的回答将适用于使用密码创建的GKE集群,但我建议尽可能避免使用该密码(或在没有密码的情况下创建GKE集群)

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

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

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

我还必须将kubectl更新到最新版本,在此之前(v1.6),即使使用此解决方案,我仍然会收到相同的错误消息。也许这对其他人也有帮助。根据我的GCP经验,我得到了
错误:未知标志:-用户名
,您不仅需要此权限(
container.clusterRoleBindings.create
),还需要此权限
container.clusterRoles.bind
)。使用此功能,您可以创建自己的自定义角色,而不需要使用大的
Kubernetes引擎管理
预定义角色。这里有文档:GCP/GKE:我还需要在GKE中为我的用户添加一个ClusterRoleBinding,以使其正常工作。
gcloud projects add-iam-policy-binding $PROJECT \
  --member=user:person@company.com \
  --role=roles/container.admin