#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. Кроме того, я не понимал, что роли кластера могут быть ограничены только работой в одном пространстве имен. Это действительно полезно!