Установка gitlab в LXC контейнер
Установка Gitlab на виртуальную машину или сервер не представляет никакой трудности. Разработчики предлагают полностью автоматизированную систему развертывания приложения. Но в среде lxc контейнера она не работает. Я расскажу, как это исправить.
После автоматической установки gitlab, вы увидите следующую ошибку:
There was an error running gitlab-ctl reconfigure:
sysctl[kernel.shmall] (postgresql::enable line 66) had an error: Mixlib::ShellOut::ShellCommandFailed: execute[load sysctl conf kernel.shmall] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/resources/sysctl.rb line 59) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '255'
---- Begin output of cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p - ----
STDOUT:
STDERR: sysctl: setting key "kernel.shmmax": Read-only file system
---- End output of cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p - ----
Ran cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p - returned 255
Проблема в том, что gitlab меняет некоторые параметры ядра через sysctl, а у контейнера нет возможности ими управлять. Отсюда у нас есть 2 решения:
- Отключить применение этих изменений.
- Применить эти изменения на хосте.
Так как я настраивал тестовую систему только под мои проекты, я решил не применять эти изменения. Посмотреть, о чем идет речь, можно в следующих конфигурационных файлах:
# cat /opt/gitlab/embedded/etc/90-omnibus-gitlab-*
kernel.sem = 250 32000 32 262
kernel.shmall = 4194304
kernel.shmmax = 17179869184
net.core.somaxconn = 1024
Скажу честно, я не осилил их описание. Точнее я его прочитал, но не понял, как эти параметры могут повлиять на работу gitlab. Обычно, тюнинг ядра нужен, когда приложение работает под хорошей нагрузкой и дефолтные параметры становятся неоптимальными для максимальной производительности. В таком случае, отключение изменений этих параметров лично мне никак не повредит, так как нагрузки никакой не будет. Я буду единственным пользователем этой системы.
Если вы разворачиваете gitlab в продакшн, то внимательно взвесьте все за и против и решите, как лучше поступить. Чтобы отключить применение изменений в ядре, необходимо изменить файл /opt/gitlab/embedded/cookbooks/package/resources/sysctl.rb. Было:
# Load the settings right away
execute "load sysctl conf #{new_resource.name}" do
command "cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p -"
action :nothing
Стало:
# Load the settings right away
execute "load sysctl conf #{new_resource.name}" do
#command "cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p -"
command "cat /etc/sysctl.conf"
action :nothing
После этого запускаем конфигурацию системы повторно:
# gitlab-ctl reconfigure
Ошибки быть не должно. В завершении настройки на всякий случай перезапустите сервисы:
# gitlab-ctl restart
Для того, чтобы внести нужные изменения в ядро хостовой машины, добавьте необходимые параметры в /etc/sysctl.conf и выполните команду:
# cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p -
После этого перезагрузите хост и запускайте заново конфигурацию gitlab в контейнере.
- Вирус Crusis (Dharma) — как расшифровать файлы и удалить вымогателя
- Мониторинг принтеров HP, Kyocera, Brother через snmp в zabbix
- Очистка и удаление файлов ib_logfile в Mysql
- Движение — жизнь. Привыкаем с детства жить на ногах, а не попе.
- Обновление Zabbix 3.4 до 4.0
- Установка и настройка Zabbix 4.0
- Dashboard для логов Nginx в Kibana+Elasticsearch
- Обзор, отзыв и сравнение с redmi Xiaomi mi4c
- Сделать резервную копию сайта на яндекс диск
- Настройка шлюза и прокси сервера на базе ClearOS