Я наконец нашел, в чем была проблема.
Роль роль и роль привязки должна быть создана в целевом пространстве имен.
Я изменил следующие типы ролей и привязок к ролям, указав пространство имен внутри yaml напрямую.
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: lockdown
namespace: lockdown
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: rb-lockdown
namespace: lockdown
subjects:
- kind: ServiceAccount
name: sa-lockdown
roleRef:
kind: Role
name: lockdown
apiGroup: rbac.authorization.k8s.io
В этом примере я дал разрешение пользователю sa-lockdown получить , смотреть и список стручков в пространстве имен блокировка .
Теперь, если я попрошу получить капсулы: kubectl auth can-i get pods --namespace lockdown --as system:serviceaccount:lockdown:sa-lockdown
вернется да .
Напротив, если запросить развертывание: kubectl auth can-i get deployments --namespace lockdown --as system:serviceaccount:lockdown:sa-lockdown
вернет нет .
Вы также можете оставить файлы, как они были ввопрос и просто создать их, используя kubectl create -f <file> -n lockdown
.