Ресурсы 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
Несколько замечаний:
- Исправлена
subjects
использоватьServiceAccount
изUser
. Это фактически причина сбоя, потому что учетной записи службы не был предоставлен RBAC. - Я предположил, что вы хотите удалить ресурсы Tekton в
my-namespace
посредствомdefault
сервисный счетmy-account
пространство имен. Если это другое, то меняетсяRole
а такжеRoleBinding
нужно делать соответственно.