我正在尝试授予服务帐户 my-service-account 访问权限,以便在运行 Kubernetes 1.14 的 Google Kubernetes Engine 集群中的命名空间 my-namespace 内应用部署。
我的角色绑定如下:
$ kubectl describe rolebinding -n my-namespace --context my-cluster
Name: my-namespace-service-account-policy
Labels: <none>
Annotations: <none>
Role:
Kind: Role
Name: edit
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount my-service-account my-namespace
但是,当我的服务帐户去应用清单时,我收到一个错误,结尾是:
deployments.apps "my-namespace" is forbidden: User "system:serviceaccount:my-namespace:my-service-account" cannot get resource "deployments" in API group "apps" in the namespace "my-namespace": RBAC: role.rbac.authorization.k8s.io "edit" not found
我还尝试使用“admin”而不是 edit。如果我改为使用 cluster-admin 为同一服务帐户创建 clusterrolebinding,则一切正常。如何授予帐户对命名空间的访问权限?
答案1
这预定义edit
名称是ClusterRole
,因此将其作为 来引用Role
并不是指同一个实体。
该声明的 godoc 似乎暗示创建到是安全的,ClusterRoleBinding
因为edit
ClusterRole
它的范围是命名空间级别的编辑,但我还没有深入研究过该策略,也不是 RBAC 专家