Ресурсы deletecollection kubernetes (tekton) - нужен конкретный RBAC?

Я пытаюсь удалить ресурсы tekton kubernetes в контексте учетной записи службы с конфигурацией kubernetes в кластере, и у меня возникают ошибки, связанные с доступомdeletecollectionсо всеми тектонными ресурсами. Пример ошибки выглядит следующим образом:

pipelines.tekton.dev запрещен: Пользователь "system:serviceaccount:my-account:default" не может удалить ресурс коллекции "pipelines" в группе API "tekton.dev" в пространстве имен "my-namespace"

Я попытался применить RBAC, чтобы помочь здесь, но продолжаю испытывать те же ошибки. Моя попытка RBAC выглядит следующим образом:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-role
  namespace: my-namespace
rules:
- apiGroups: ["tekton.dev"]
  resources: ["pipelines", "pipelineruns", "tasks", "taskruns"]
  verbs: ["get", "watch", "list", "delete", "deletecollection"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-role-binding
  namespace: my-namespace
subjects:
- kind: User
  name: system:serviceaccount:my-account:default
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: my-role
  apiGroup: rbac.authorization.k8s.io

Эти конфигурации RBAC продолжают приводить к той же ошибке. Это или подобное необходимо? Есть ли какие-либо примеры RBAC при взаимодействии с ресурсами tekton, в частности при их удалении?

2 ответа

Учитывая два пространства имен my-namespace а также my-account учетная запись службы по умолчанию в my-account пространство имен правильно предоставлены разрешения для deletecollection глагол на pipelines в my-namespace.

Вы можете проверить это, используя kubectl auth can-i вот так после нанесения:

$ kubectl -n my-namespace --as="system:serviceaccount:my-account:default" auth can-i deletecollection pipelines.tekton.de
yes

Убедитесь, что вы действительно применили манифесты RBAC.

Измените RBAC, как показано ниже

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-role
  namespace: my-namespace
rules:
- apiGroups: ["tekton.dev"]
  resources: ["pipelines", "pipelineruns", "tasks", "taskruns"]
  verbs: ["get", "watch", "list", "delete", "deletecollection"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-rolebinding
  namespace: my-namespace
subjects:
- kind: ServiceAccount
  name: default
  namespace: my-account
roleRef:
  kind: Role
  name: my-role
  apiGroup: rbac.authorization.k8s.io

Несколько замечаний:

  1. Исправлена subjects использовать ServiceAccount из User. Это фактически причина сбоя, потому что учетной записи службы не был предоставлен RBAC.
  2. Я предположил, что вы хотите удалить ресурсы Tekton в my-namespace посредством default сервисный счет my-accountпространство имен. Если это другое, то меняетсяRole а также RoleBinding нужно делать соответственно.
Другие вопросы по тегам