Многие компании при внедрении  практик 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 с разграничением прав по группам.

Комментарии (0)