Я пытаюсь предоставить сервисной учетной записи my-service-account доступ для применения развертываний в пространстве имен my-namespace в кластере Google Kubernetes Engine под управлением Kubernetes 1.14.
Вот как выглядит моя привязка к ролям:
$ 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. Если вместо этого я создам привязку кластера с администратором кластера для той же учетной записи службы, она будет работать нормально. Как предоставить учетной записи доступ только к пространству имен?
В предопределенный edit
название это ClusterRole
, и, таким образом, ссылаясь на него как на Role
не относится к одному и тому же объекту.
Годок для этого объявления, кажется, подразумевает, что создание ClusterRoleBinding
к edit
ClusterRole
поскольку он предназначен для редактирования на уровне пространства имен, но я не изучал эту политику подробно и не являюсь мастером RBAC