Настройки инстанса в контейнере — это настройки установки пакетом для ОС Linux, к которым добавляется слой контейнера: где лежит файл конфигурации, какие переменные читает стартовый скрипт и какие порты публикует хост.

Применение изменений конфигурации

Файл конфигурации — /etc/gitlab/gitlab.rb на томе конфигурации, то есть /srv/code/config/gitlab.rb на хосте. Правьте его на хосте или в контейнере:

docker exec -it code editor /etc/gitlab/gitlab.rb

Примените изменение, не останавливая контейнер:

docker exec code gitlab-ctl reconfigure

Перезапуск даёт тот же результат: настройка выполняется при каждом запуске контейнера.

docker restart code

Язык интерфейса, почта, число рабочих процессов и срок хранения резервных копий — это те же настройки, что и при установке на хост; что делает каждая из них, описано в разделе «Настройка после установки».

Переменные запуска

Стартовый скрипт читает переменные при запуске контейнера, поэтому для изменения любой из них контейнер создают заново с теми же томами.

ПеременнаяНазначение
GITLAB_OMNIBUS_CONFIGСодержит строки конфигурации, которые вычисляются до чтения /etc/gitlab/gitlab.rb. Настройка из файла переопределяет ту же настройку из переменной.
GITLAB_SKIP_RECONFIGUREСо значением true на уже настроенном инстансе запуск пропускает gitlab-ctl reconfigure, и изменения конфигурации остаются неприменёнными до следующей настройки.
GITLAB_SKIP_PG_UPGRADEСо значением true запуск не выполняет gitlab-ctl pg-upgrade, и база данных остаётся на текущей версии PostgreSQL.
GITLAB_DISABLE_OPENSSHСо значением true запуск не готовит сервис sshd, и Git по SSH недоступен.
GITLAB_SKIP_TAIL_LOGSСо значением true логи сервисов не выводятся в вывод контейнера и остаются на томе логов.
GITLAB_PRE_RECONFIGURE_SCRIPTЕсли переменная задана, её значение выполняется как команда оболочки до запуска сервисов.
GITLAB_POST_RECONFIGURE_SCRIPTЕсли переменная задана, её значение выполняется как команда оболочки после шага с PostgreSQL.
GITLAB_ALLOW_SHA1_RSAСо значением true конфигурация sshd принимает алгоритм ключа хоста и тип открытого ключа ssh-rsa.
OPENSSL_FORCE_FIPS_MODEЗначение переменной записывается в окружение сервиса sshd.

Ключи хоста SSH

Ключи хоста RSA, ECDSA и Ed25519 генерируются при первом запуске в /etc/gitlab и связываются символическими ссылками с /etc/ssh, откуда их читает инстанс. Ключи лежат на томе конфигурации, поэтому контейнер, пересозданный при обновлении, сохраняет их, и клиенты Git видят прежний ключ хоста. Новый том конфигурации означает новые ключи, и каждый клиент при следующем подключении сообщит о смене ключа хоста.

Git по SSH работает с ключами, которые пользователи добавляют в веб-интерфейсе: sshd в контейнере слушает порт 22, принимает только пользователя git, аутентификация по паролю отключена.

Ресурсы и рабочие процессы

Контейнеру доступна память хоста, если при создании она не ограничена параметром --memory, и ему нужен параметр --shm-size 256m, как описано в разделе «Требования».

На хосте с 6–8 ГБ RAM закрепите число рабочих процессов, чтобы его не подбирала автонастройка. Настройки задаются в /etc/gitlab/gitlab.rb или в GITLAB_OMNIBUS_CONFIG, их значения описаны в разделе «Настройка после установки»:

puma['worker_processes'] = 2
sidekiq['concurrency'] = 10

Порты и файрвол хоста

Порты 80, 443 и 22 публикуются при создании контейнера. Порт хоста может отличаться от порта контейнера, например -p 8080:80 -p 8443:443 -p 2222:22.

В адресе инстанса указывается порт хоста, который открывают пользователи; порт SSH, который веб-интерфейс показывает в URL для клонирования, задаёт параметр gitlab_rails['gitlab_shell_ssh_port'], описанный в разделе «Порт SSH».

Откройте опубликованные порты на хосте для сетей пользователей; команды для firewalld и ufw приведены в разделе «Настройка после установки». Docker публикует порты собственными правилами iptables, поэтому после каждого изменения правил файрвола проверяйте порты с рабочей станции:

curl -sI http://<HOSTNAME>/ | head -n 1
ssh -T -p 22 git@<HOSTNAME>

Расширенный поиск (OpenSearch)

Подключение к OpenSearch — параметр gitlab_rails['fe_search'] и правило маршрутизации Sidekiq, описанные в разделе «Расширенный поиск (OpenSearch)». Добавьте их в /etc/gitlab/gitlab.rb в томе с конфигурацией или в GITLAB_OMNIBUS_CONFIG, затем перезапустите контейнер или выполните docker exec code gitlab-ctl reconfigure.

Дополнительные ресурсы