Я хотел бы предоставить привилегии учетной записи службы Kubernetes для выполнения kubectl --token $token get pod --all-namespaces
.Я знаком с этим для одного пространства имен, но не знаю, как это сделать для всех (включая новые, которые могут быть созданы в будущем и без предоставления учетной записи службы полные права администратора ).
В настоящее время я получаю это сообщение об ошибке:
Ошибка от сервера (Запрещено): pods запрещено: Пользователь "system: serviceaccount: kube-system: test" не может перечислить ресурсы "pods"в группе API" "в области кластера
Какие (кластерные) роли и привязки ролей требуются?
ОБНОВЛЕНИЕ Назначение роли view
дляСервис со следующим ClusterRoleBinding
работает и является шагом вперед.Однако я хотел бы ограничить привилегии учетной записи службы дополнительно требуемым минимумом.
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: test
subjects:
- kind: ServiceAccount
name: test
namespace: kube-system
roleRef:
kind: ClusterRole
name: view
apiGroup: rbac.authorization.k8s.io
Токен учетной записи службы можно извлечь следующим образом:
secret=$(kubectl get serviceaccount test -n kube-system -o=jsonpath='{.secrets[0].name}')
token=$(kubectl get secret $secret -n kube-system -o=jsonpath='{.data.token}' | base64 --decode -)