Как я могу предоставить том (часть II)?

Я пытаюсь настроить RBAC, чтобы подготовить том. Это продолжение этого (Как правильно подготовить том для арго?) нить. Добавление роли изменило ошибку с не удается получить ресурс на не удается создать ресурс.

Сейчас я думаю, что это проблема Kubernetes, но до сих пор не понимаю, как ее решить.

ошибка:

Error from server (Forbidden): error when creating "/tmp/manifest.yaml": persistentvolumeclaims is forbidden: User "system:serviceaccount:argo:argo" cannot create resource "persistentvolumeclaims" in API group "" in the namespace "argo" 

role.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: workflow
  namespace: argo
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - pods/log
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
   - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete

person user3877654    schedule 23.11.2020    source источник


Ответы (1)


Правила авторизации RBAC настраиваются с помощью ресурсов K8s, которые можно разделить на две группы:

  • Roles и ClusterRole, которые определяют, какие команды / действия могут быть выполнены с какими ресурсами.
  • RoleBindings и ClusterRoleBindings, которые привязывают указанные выше роли к конкретным пользователям, группам или ServiceAccounts.

В вашем случае вы успешно создали Roles, но вам не хватает RoleBindings, так что вкратце, кто может выполнять действия, которые вы уже указали.

Привязку ролей можно создать с помощью файлов yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: workflow-argo
  namespace: argo
subjects:
# You can specify more than one "subject"
- kind: User
  name: jane # "name" is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  # with "roleRef" you specify the binding to a Role / ClusterRole
  kind: Role 
  name: workflow # here you have to reference the name of your Role
  apiGroup: rbac.authorization.k8s.io

или командой:

kubectl create rolebinding workflow-argo --clusterrole=workflow --user=jane --namespace=argo

Дополнительные сведения см. В разделе K8s: Использование авторизации RBAC

person acid_fuji    schedule 24.11.2020