Обновление GitLab

Оцените статью

Казалось бы, что может будет проще сделай yum update и все будет замечательно, но как всегда есть нюансы и большую продовую систему можно довольно легко сломать и вас за это точно не похвалят. Поэтому, вам нужен пошаговый план который включает в себя все моменты где что-то пойдет не так, а оно по законам Мерфи так и случится.

Если вы получили сообщение Important notice — Critical patch release, стоит к этому совету прислушаться и обновиться в самое ближайшее время.

Начинаем с обновления списка пакетов в CentOS.

# yum makecache

Есть ли у вас план Мистер Фикс?

План у меня конечно же есть и главное он максимально простой:

  • Делаем резевную копию средствами гитлаба
  • Делаем снэпшот виртуальной машины для быстрого отката
  • Проводим серию последовательных обновлений, на минорные сборки

План простой и казалось бы безотказыный и мы сможем спокойно и последовательно (в моем случае) обновиться, ф текущую установленную версию пакета вы можете посмотреть командой:

# yum --showduplicate list gitlab-ce

Или в случае использования Ubuntu/Debian:

# apt-cache policy gitlab-ce

Теперь думаю, что хватит разговоров и давайте займемся делом.

Резервное копирование и восстановление средствами GitLab

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

Создаем резервную копию:

# gitlab-backup create STRATEGY=copy

Аналогично, но без артифактов и докер-реджестри:

# gitlab-backup create STRATEGY=copy SKIP=registry,artifacts,lfs

Восстановление из резервной копии выполняется следующей последовательностью команд.

Смена прав доступа к скопированному бэкапу:

# chown git:git /var/opt/gitlab/backups/1630905848_2021_09_06_13.12.3_gitlab_backup.tar

Остановка сервисов использующих базу данных:

# gitlab-ctl stop puma
# gitlab-ctl stop sidekiq

Восстанавливаем архив:

# gitlab-backup restore BACKUP=1630905848_2021_09_06_13.12.3

Реконфигурация, перезапуск тестирование:

# gitlab-ctl reconfigure
# gitlab-ctl restart
# gitlab-rake gitlab:check SANITIZE=true

Создание снимка виртуальной машины

Снимок выртуально машины мы содаем на случай когда мне понадобится быстро откатить нашу VM если обновление пошло не по плану и не заниматься восстановлением из резервной копии которое занимает достаточно много времени.

Screenshot_1.png

Снимок создаем средствами VmWare Cloud и обратите внимание, что множество вложенных снимков может значительно деградировать производительность виртуальной машины!

Обновление GitLab

Проводим серию последовательных обновлений минорных версий. Обязательно минорных или вы получите ошибку, например в моем случае мы можем шагнуть с текущей версии до 17.1.8.

Останавливаем сервисы работающие с базой данных:

# gitlab-ctl stop puma
# gitlab-ctl stop sidekiq

Такими итерациями обновляемся до последней стабильной версии. Последовательность обновления:

# yum install gitlab-ce-17.1.8-ce.0.el7
# yum install gitlab-ce-17.2.9-ce.0.el7
# yum install gitlab-ce-17.3.5-ce.0.el7
# yum install gitlab-ce-17.4.2-ce.0.el7

Потенциальные проблемы

Ошибка «Cannot communicate securely with peer: no common encryption algorithm(s).»

В моем случае была связана с тем, что репозитарий GitLab заблокирован на доступ из России в связи с недавними событиями и пришлось использовать прокси в Америке. Для этого в файле /etc/yum.conf прописываем используемый прокси-сервер (в моем случае это Squid на моем VPS).

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
proxy=http://prod-srv-02.bds.su:3128

Проверяем работу через прокси-сервер:

# curl -I -x "http://45.138.27.6:3128" https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64/repodata/repomd.xml

При обновлении до версии 14.10.5 получаем ошибку: Error executing action `run` on resource ‘bash[migrate gitlab-rails database]’

Последовательность действий для устранения ошибки:

# gitlab-rake gitlab:background_migrations:finalize[ProjectNamespaces::BackfillProjectNamespaces,projects,id,'[null\,"up"]']
# gitlab-rake db:migrate
# gitlab-ctl reconfigure

Похожие записи

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Так как на севере делать абсолютно нечего, то я продолжаю заниматься саморазвитием 🙂 На этой неделе вспоминаю и углубляю свои знания в Docker. Лучший способ запомнить тему, это вести конспект…

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

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

Читать еще статьи

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker

Сетевые возможности Docker

Сетевые возможности Docker