#kubernetes #exec #kubectl
Вопрос:
У меня есть скрипт, который создает пользователей с определенным доступом.
скрипт выполняет следующие команды:
kubectl create serviceaccount username kubectl create clusterrole readonlyuser --non-resource-url=* --verb=get,list,watch --resource=pods,pods/attach,pods/exec,pods/port-forward,pods/proxy,services/proxy kubectl create clusterrolebinding username --serviceaccount=default:username --clusterrole=readonlyuser kubectl create rolebinding username --serviceaccount=default:username --clusterrole=readonlyuser --namespace=namespace
Когда я пытаюсь войти в модуль в этом конкретном пространстве имен, я получаю следующее:
Error from server (Forbidden): pods "lt;podnamegt;" is forbidden: User "system:serviceaccount:default:username" cannot create resource "pods/exec" in API group "" in the namespace "namespace"
Есть идеи, как это исправить?
Ответ №1:
В сообщении об ошибке указано следующее:
cannot create resource "pods/exec" in API group "" in the namespace "namespace"
Поэтому создал еще одну роль кластера и привязку ролей следующим образом:
kubectl create clusterrole exec-readonlyuser --verb create --resource pods/exec kubectl create rolebinding exec-readonlyuser --clusterrole=exec-readonlyuser --serviceaccount default:namespace -n namespace
теперь попытался выполнить, и это работает.
kubectl exec -it nginx --as system:serviceaccount:namespace:username -- sh # #exit
Если вы используете yaml
, то это может быть добавлено в качестве другого правила в ту же роль кластера.
Комментарии:
1. Ты потрясающая. Это было именно то, чего не хватало.