Многие компании при внедрении практик gitops выбирают такой инструмент как ArgoCD и сталкиваются с проблемой заведения учетных записей и разграничением прав пользователей. В этой статье мы рассмотрим как настроить авторизацию в ArgoCD через Gitlab CI/CD с разграничением прав по группам.
Предлагаем пройти этот непростой путь по шагам и тогда он станет для вас простым.
Итак, argocd уже установлен и настроен в вашем кластере.
Шаг № 1. Регистрация приложения
В веб интерфейсе нашего Gitlab переходим Menu → Admin → Applications и жмем «New application».
В GitLab зарегистрируйте новое приложение. Адрес обратного вызова должен заканчиваться на https://адрес_вашего_арго/api/dex/callback (например https://argocd.example.com/api/dex/callback).
Необходимые разрешения для работы read_user и open_id.


После регистрации приложения вы получите идентификатор приложения и секрет OAuth2. Эти значения будут использованы в конфигмапе Argo CD.

Шаг № 2. Внесение данных
Внесем полученный secret приложения в secret с названием argocd-secret.
Для внесения данных в сущность Secret необходимо сначала перевести нашу строку в base64.
Для этого выполним команду на своем ПК
echo "a5ea922ec71954491e96f42c96999fdd2d9c3d8a1613dc3ef15460cadc7000a0" | base64 —wrap=0
или можно воспользоваться онлайн сервисом (например https://www.base64encode.org/).
Получим в нашем случае такой вывод:
YTVlYTkyMmVjNzE5NTQ0OTFlOTZmNDJjOTY5OTlmZGQyZDljM2Q4YTE2MTNkYzNlZjE1NDYwY2FkYzcwMDBhMAo=
Теперь мы готовы внести нашу строку. Выполним команду в нашем кластере:
kubectl edit secret -n argocd argocd-secret
И добавим после data:
apiVersion: v1 data: gitlab.clientSecret: YTVlYTkyMmVjNzE5NTQ0OTFlOTZmNDJjOTY5OTlmZGQyZDljM2Q4YTE2MTNkYzNlZjE1NDYwY2FkYzcwMDBhMAo=
И сохраняем изменения.
Шаг № 3. Правка кофигмапа ArgoCD
Для изменения конфигмапа ArgoCD вводим команду:
kubectl edit configmap argocd-cm -n argocd
После data вводим следующий текст:
data: dex.config: | connectors: - type: gitlab id: ArgoCD name: GitLab config: baseURL: https://gitlab.example.com clientID: 8e3a97699cae1c2bce88d871d02e32e53bc473f6ecd437464d9ed27d7f5f1f2d clientSecret: $gitlab.clientSecret url: https://argocd.example.com/
где:
-
id: ArgoCD— название нашего приложения. -
name: Gitlab— название кнопки авторизации через SSO на странице https://argocd.example.com/. -
baseURL: https://gitlab.example.com— адрес нашего gitlab. -
clientID: 8e3a97699cae1c2bce88d871d02e32e53bc473f6ecd437464d9ed27d7f5f1f2d— id нашего приложения в Gitlab. -
clientSecret: $gitlab.clientSecret— secret который мы добавляли в Secret с названием argocd-secret. -
url: https://argocd.example.com/— веб адрес ArgoCD.
Шаг № 4. Настройка прав публикаций
Авторизуясь через SSO argocd наследует группы от учетной записи в гитлабе. Следовательно для разграничения прав необходимо назначать группы пользователям в Гитлаб.
Создайте группу в гитлаб к примеру devops и добавьте туда своего пользователя.
Унаследование прав в ArgoCD осуществляется через конфигмап argocd-rbac-cm.
В ArgoCD по умолчанию есть две группы с ролью admin и readonly. Как вы уже догадались роль admin предоставляет полные права, readonly только на чтение. Ниже приведен пример конфига который по умолчанию дает доступ на чтение всем, группе devops — все права так как назначена роль admin и группе gitlab разрешение на чтение, создание, удаление репозитория, чтение кластера, все действия над applications.
Для редактирования прав введем команду:
kubectl edit configmap argocd-rbac-cm -n argocd
И после data: добавим:
apiVersion: v1 data: policy.csv: | p, role:org-admin, applications, *, */*, allow p, role:org-admin, clusters, get, *, allow p, role:org-admin, repositories, get, *, allow p, role:org-admin, repositories, create, *, allow p, role:org-admin, repositories, update, *, allow p, role:org-admin, repositories, delete, *, allow g, devops, role:admin g, gitlab, role:org-admin policy.default: role:readonly
Сохраняем изменения, ждем пару минут и пробуем авторизоваться.

Жмем login in via gitlab….после чего нас перекинет на старницу авторизации Gitlab. Вводим логин и пароль от Gitlab.
после чего мы должны успешно авторизоваться на argocd.

Перейдя на вкладку User info можно увидеть в каких группах состоит наш пользователь….эти группы подтягиваются из Gitlab.

Поздравляем! Вы получили авторизацию в ArgoCD через Gitlab CI/CD с разграничением прав по группам.
ссылка на оригинал статьи https://habr.com/ru/post/659137/
Добавить комментарий