Установка gitlab в LXC контейнер

Установка Gitlab на виртуальную машину или сервер не представляет никакой трудности. Разработчики предлагают полностью автоматизированную систему развертывания приложения. Но в среде lxc контейнера она не работает. Я расскажу, как это исправить.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

После автоматической установки 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 в LXC контейнере

Проблема в том, что gitlab меняет некоторые параметры ядра через sysctl, а у контейнера нет возможности ими управлять. Отсюда у нас есть 2 решения:

  1. Отключить применение этих изменений.
  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 в контейнере.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

3 комментария

  1. nano /etc/gitlab/gitlab.rb
    ##! Attempt to modify kernel paramaters. To skip this in containers where the
    ##! relevant file system is read-only, set the value to false.
    package['modify_kernel_parameters'] = false

    gitlab-ctl reconfigure

  2. Эти изменения несущественны если не предполагается использовать полноценную систему развертывания и прочие премудрости системы контроля версий, в противном случае, я бы не рекомендовал использовать под эти цели контейнер, логичнее использовать полноценную виртуальную машину.

    • Спасибо за комментарий. Я так и предполагал изначально, но проверять заленился. И все же, почему не использовать контейнер? Есть какие-то конкретные примеры проблем? Параметры ядра же можно по факту выставить. Дальше, по идее, проблем быть не должно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar