Home » Ошибки » Установка gitlab в LXC контейнер

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

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

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

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

Супер-интенсив "Tarantool"

Если у вас есть желание освоить платформу in-memory вычислений, востребованную в современных высоконагруженных приложениях, рекомендую пройти интенсив Tarantool в OTUS. Обучение длится 5 дней. Что даст вам этот интенсив:
  • Узнаете архитектуру и внутреннее устройство Tarantool.
  • Поймете сильные и слабые стороны Tarantool.
  • Сможете назвать сходства и отличия от других СУБД.
  • Увидите кейсы использования: куда брать, куда не брать.
  • Установите и запустите Tarantool.
  • Поднимете собственный кластер.
Смотрите подробнее программу по .
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

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

Автор Zerox

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

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

  1. Аватар

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

    • Zerox

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

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.