Назад | Перейти на главную страницу

Использовать роли пространства имен Kubernetes RBAC?

Я пытаюсь предоставить сервисной учетной записи 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