Получение ошибки 403 при попытке создать поды с использованием специальной учетной записи службы

В кластере k8s я создал следующие объекты.

  1. Пространство имен (testpsp)
  2. Custom ServiceAccount (тестовый пользователь)
  3. Role и RoleBindings через. Файлы манифеста

См. Ниже файлы yaml для ресурсов Role и RoleBinding.

$ cat developer.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: developer namespace: testpsp rules: - apiGroups: - "" resources: - pods verbs: - get - create - apiGroups: - extensions - apps resources: - deployments - replicasets verbs: - '*'

$ cat developer-binding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: developer-binding namespace: testpsp roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: developer subjects: - kind: ServiceAccount name: testuser

Как вы можете видеть в вышеупомянутом файле манифеста роли, я дал разрешение CREATE наPod ресурс для testuserСервисный аккаунт. Но все же я получаю сообщение об ошибке.

ошибка

Ошибка с сервера (Запрещено): ошибка при создании "hello-pod.yaml": модули запрещены: пользователь "testuser" не может создавать ресурсы "pods" в группе API "" в пространстве имен "testpsp"

Вот файл Pod yaml. Я что-нибудь упустил?

$ cat hello-pod.yaml apiVersion: v1 kind: Pod metadata: name: hello-pod namespace: testpsp spec: serviceAccountName: testuser containers: - name: hello-kubernetes image: paulbouwer/hello-kubernetes:1.5 ports: - containerPort: 8080

Вот команда, которую я запускаю для создания модуля.

$ kubectl --as=testuser -n testpsp create -f hello-pod.yaml

1 ответ

Решение

При устранении этой проблемы я заметил, что вместо прямого упоминания имени ServiceAccount в флаге "as" в команде kubectl нам нужно использовать следующий формат

system:serviceaccount:<namespace_name>:<serviceaccount_name>

В моем случае это будет выглядеть так - system: serviceaccount: testpsp: testuser

После этого все заработало нормально.

Другие вопросы по тегам