Разрешения Kubernetes для установки Helm 3 в определенное пространство имен

#kubernetes #permissions #continuous-integration

#kubernetes #разрешения #непрерывная интеграция

Вопрос:

Я пытаюсь настроить пользователя, у которого будут разрешения на установку с использованием Helm 3 в определенное пространство имен. (Для моей системы CI / CD.)

Например, если пользователь пытается запустить a helm upgrade --install с --namespace=dev помощью, тогда он работает просто отлично. Но если они попытаются --namespace=test , это не удастся.

Но я нахожу себя перегруженным опциями. При создании роли вы должны выбрать apiGroups , resources и verbs . Я вижу вызываемый ресурс deployments , но я прочитал, что также необходим секретный доступ. Я немного поискал в Google, но большинство обращений касаются настройки Helm 2 (с tiller).

Какие минимальные разрешения Kubernetes необходимы для установки с использованием Helm 3?

Ответ №1:

В Kubernetes рекомендуется убедиться, что ваше приложение работает в указанной вами области, поэтому вы должны предоставить роль учетной записи службы пользователя или приложения. Подробнее о разрешениях учетной записи службы читайте в официальных документах Kubernetes.

Чтобы ограничить доступ пользователя к определенному пространству имен, вы можете использовать либо edit роль, либо admin роль. Если ваши диаграммы создают или взаимодействуют с ролями и ролевыми привязками, вы захотите использовать admin кластерную роль.

Кроме того, вы также можете создать привязку ролей с cluster-admin доступом. Предоставление пользователю cluster-admin доступа в области пространства имен обеспечивает полный контроль над каждым ресурсом в пространстве имен, включая само пространство имен.

Для этого примера мы создадим пользователя с edit ролью. Сначала создайте пространство имен:

 $ kubectl create namespace your-namespace

 

Теперь создайте привязку ролей в этом пространстве имен, предоставив пользователю edit роль.

 $ kubectl create rolebinding steve-edit
    --clusterrole edit 
    --user steve 
    --namespace your-namespace
 

Эта команда создаст привязку ролей steve-edit . Эта ролевая привязка предоставляет пользователю разрешения, определенные в edit steve кластерной роли, для пространства имен your-namespace

Edit является кластерной ролью по умолчанию, которая разрешает доступ на чтение / запись к большинству объектов в пространстве имен. Это не позволяет просматривать или изменять роли или привязки ролей.

Взгляните: rbac-namespace-helm.

Прочитайте о кластерных ролях: rbac-кластерные роли, kubernetes-авторизация.

Вы также можете предоставить определенному пользователю доступ на чтение / запись в области кластера, чтобы вы могли установить helm в любое пространство имен. Вы должны предоставить пользователю либо admin доступ, либо cluster-admin доступ.

Подробнее читайте здесь: cluster-scope-rbac-helm .

Комментарии:

1. Так что на самом деле все сводится к тому, что ваша диаграмма Helm делает с Kubernetes. Если вы меняете роли и тому подобное, вам нужно admin или cluster-admin , но если нет, вы можете обойтись просто наличием edit . Спасибо за фантастический ответ!

2. Кроме того, я не понимал, что роли кластера могут быть ограничены только работой в одном пространстве имен. Это действительно полезно!