Многие компании при внедрении  практик gitops выбирают такой инструмент как ArgoCD и сталкиваются с проблемой заведения учетных записей и разграничением прав пользователей. В этой статье мы рассмотрим как настроить авторизацию в ArgoCD через Gitlab CI/CD с разграничением прав по группам. Предлагаем пройти этот непростой путь по шагам и тогда он станет для вас простым.  Итак, argocd уже установлен и настроен в вашем кластере. В веб интерфейсе нашего 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.      Внесем полученный secret приложения в secret с названием argocd-secret. Для внесения данных в сущность Secret необходимо сначала перевести нашу строку в base64. Для этого выполним команду на своем ПК echo "a5ea922ec71954491e96f42c96999fdd2d9c3d8a1613dc3ef15460cadc7000a0" | base64 —wrap=0 или можно воспользоваться онлайн сервисом (например https://www.base64encode.org/). Получим в нашем случае такой вывод:  YTVlYTkyMmVjNzE5NTQ0OTFlOTZmNDJjOTY5OTlmZGQyZDljM2Q4YTE2MTNkYzNlZjE1NDYwY2FkYzcwMDBhMAo= Теперь мы готовы внести нашу строку. Выполним команду в нашем кластере: kubectl edit secret -n argocd argocd-secret И добавим после data: И сохраняем изменения. Для изменения конфигмапа ArgoCD вводим команду: kubectl edit configmap argocd-cm -n argocd После data вводим следующий текст: где: 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. Авторизуясь через 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: добавим: Сохраняем изменения, ждем пару минут и пробуем авторизоваться. Жмем login in via gitlab….после чего нас перекинет на старницу авторизации Gitlab. Вводим логин и пароль от Gitlab. после чего мы должны успешно авторизоваться на argocd. Перейдя на вкладку User info можно увидеть в каких группах состоит наш пользователь….эти группы подтягиваются из Gitlab. Поздравляем! Вы получили авторизацию в ArgoCD через Gitlab CI/CD с разграничением прав по группам. Разработка актуальные IT-решения