Обновление 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

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

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Клонирование живого (работающего) Linux-сервера — задача, которая часто возникает при создании резервной копии, переносе системы на новое оборудование или подготовке «горячего» запасного сервера (дурка еще та и именно для подготовки…

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации

В современном цифровом мире вопросы аутентификации и авторизации пользователей выходят на первый план. Разработчикам и администраторам систем требуется надёжное, гибкое и безопасное решение для управления идентификацией — без избыточных затрат…

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

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

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

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации

Оптимизация хранения медиафайлов WordPress: перенос в облачное S3-хранилище Cloud.ru

Оптимизация хранения медиафайлов WordPress: перенос в облачное S3-хранилище Cloud.ru

Настройка ProxySQL для распределения запросов в кластере MySQL

Настройка ProxySQL для распределения запросов в кластере MySQL

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM