Настройка аутентификации  SSO ArgoCD через Gitlab CI/CD

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Многие компании при внедрении  практик 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/


Интересные статьи

Интересные статьи

Все началось с одной из учебных групп в Telegram. Студенты там очень любят делать стикеры из сообщений своего преподавателя. Я выяснил, что делаются они в полуавтоматическом режиме: сообщение пересы...
В PVS-Studio уже некоторое время есть плагины для таких IDE от JetBrains, как Rider, IntelliJ IDEA и Android Studio. Другую известную среду разработки, CLion, мы долгое время незаслуженно обходили сто...
Всем привет! До C++ Russia осталось меньше месяца — самое время показать вам, о чём там расскажут-то. Как обычно, спектр тем будет широкий — от прикладных («решаем нетривиальные з...
В 1С Битрикс есть специальные сущности под названием “Информационные блоки, сокращенно (инфоблоки)“, я думаю каждый с ними знаком, но не каждый понимает, что это такое и для чего они нужны