Новая учетная запись службы, созданная для кластера kubernetes, не может выполняться в модули

#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. Ты потрясающая. Это было именно то, чего не хватало.