Задача: настроить доменную авторизацию в Gitlab, который живёт в Kubernetes
Требования:
- Развернутый домен FreeIPA, Active Directory
- Развернутый GitLab CI
Шаг 1. Подготовка пользователя в домене FreeIPA
Создать пользователя в домене FreeIPA с правами READ ONLY, LDAP_READ в FreeIPA
Я создал пользователя gitlab-ldap
Шаг 2. Добавление пользователя в кубернетес
Создать secret в кубере, чтобы не указывать пароль в открытом виде. Передаём пароль от пользователя gitlab-ldap:
1
| kubectl -n gitlab create secret generic gitlab-ldap --from-literal=bind_password='SecretPass123'
|
Шаг 3. Добавление сертификата в кубернетес
Если у вас есть ROOT-CA внутри gitlab данный шаг не делайте.
Для усиления безопасности мы включим проверку сертификата домена FreeIPA в конфиге, поэтому достанем и поместим сертификат в secret куба, а его уже укажем в gitlab.
Мой сервер LDAP имеет IP: 192.168.10.10
1
2
| openssl s_client -connect 192.168.10.10:636 -showcerts </dev/null 2>/dev/null \
| awk '/BEGIN CERTIFICATE/{i++} {print > ("cert" i ".pem")}'
|
Смотрим содержимое:
1
2
3
4
| for f in cert*.pem; do
echo "=== $f ==="
openssl x509 -in "$f" -noout -subject -issuer
done
|
Выбираем тот серт, который подписан CA. У меня это cert2.pem
После чего помещаем его в secret:
1
| kubectl -n gitlab create secret generic freeipa-ldap-ca --from-file=ca.crt=./cert2.pem
|
Шаг 4. Добавить конфигурацию
В HELM чарт, или файл конфигурации gitlab нужно добавить параметры подключения к серверу LDAP:
1
| nano gitlab-values.yaml
|
Указываем свою UI, домен и пользователя:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| global:
appConfig:
ldap:
servers:
main:
label: 'LDAP'
host: 'freeipa.domain.local'
port: 636
uid: 'uid'
bind_dn: 'uid=gitlab-ldap,cn=users,cn=accounts,dc=freeipa,dc=local'
password:
secret: gitlab-ldap
key: bind_password
encryption: 'simple_tls'
verify_certificates: true
timeout: 10
active_directory: false
base: 'dc=freeipa,dc=local'
user_filter: 'memberof=cn=gitlab-user,cn=groups,cn=accounts,dc=freeipa,dc=local'
lowercase_usernames: false
retry_empty_result_with_codes: [80]
allow_username_or_email_login: false
block_auto_created_users: false
certificates:
customCAs:
- secret: freeipa-ldap-ca
|
Применяем конфигурацию с помощью helm upgrade или если есть argo подождать обновленной версии.
1
| helm upgrade gitlab oci://harbor.doman.local/helm/gitlab -f gitlab-values.yaml -n gitlab
|
Шаг 5. Проверить работоспособность:
1
2
| kubectl -n gitlab exec -it deploy/gitlab-toolbox -- bash
gitlab-rake gitlab:ldap:check
|

Авторизуемся и готово
