Обновление LCM ks2025.1.x → ks2026.2.1¶
Важно
Все команды на LCM-узле выполняются под пользователем root.
Убедитесь, что в точке монтирования / имеется более 200 Гб свободного пространства. Это необходимо для успешного выполнения обновления.
Здесь и далее вместо x в версии ks2025.1.x указывайте фактическую версию патча, установленную на LCM-узле.
Убедитесь в наличии архива инсталлятора installer-ks2025.1.x-{sberlinux|ubuntu}-offline.tgz. Данный архив необходим для восстановления шаблонов переменных окружения для NetBox installer/netbox-docker/env/*.env.
Убедитесь, что версия ОС LCM-узла соответствует требованиям целевого релиза: Ubuntu 24.04 LTS / SberLinux 9.7.2 (см. Программные требования). При необходимости обновите ОС перед началом обновления.
Загрузите, подготовьте пакет обновления и запустите пайплайн обновления:
Зайдите на LCM-узел по SSH.
Загрузите архив
upgrade-ks2026.2-{sberlinux|ubuntu}.tgzв папку/installer/update.Убедитесь, что в этой папке нет других файлов или папок, при необходимости удалите их.
Замените в файле
/installer/config/settingsстрокуexport RELEASE=ks2025.1.x-{sberlinux|ubuntu}наexport RELEASE=ks2026.2.1-{sberlinux|ubuntu}.Откройте веб-интерфейс развёрнутого GitLab.
Перейдите в репозиторий project_k / services / upgrade.
Перейдите в раздел .
Установите значение Timeout —
5h.Создайте новый пайплайн: .
Запустите пайплайн New pipeline.
Запустите задачу update.
Дождитесь завершения выполнения операции.
Зайдите на LCM-узел по SSH.
Замените в файле
/installer/config/settingsстрокуexport RELEASE=ks2025.1.x-{sberlinux|ubuntu}наexport RELEASE=ks2026.2.1-{sberlinux|ubuntu}.Откройте веб-интерфейс развёрнутого GitLab.
Перейдите в репозиторий project_k / services / upgrade.
Перейдите в раздел .
Установите значение Timeout —
5h.Создайте новый пайплайн: .
В открывшемся окне укажите значение параметра
UPGRADE_URL— URL архива с обновлением.Запустите пайплайн New pipeline.
Запустите задачу update.
Дождитесь завершения выполнения операции.
Если пайплайн завершается с ошибкой, выполните следующие действия:
Повторно загрузите архив
upgrade-ks2026.2.1-{sberlinux|ubuntu}.tgzв папку/installer/update.При повторном запуске необходимо убедиться, что значение переменной
KEYSTACK_RELEASEравноks2025.1.x.Если повторный запуск вызывает ошибку на этапе
setup:Откройте и измените файл
/installer/data/gitlab-runner/config.toml:
В секции
[runners.docker]измените значение параметраnetwork_modeсinstallerнаhostи в параметрахhelper_image,imageзамените значение наks2026.2.1.В секции
[[runners]]добавьте параметрpre_build_script = " cp /etc/gitlab-runner/certs/ca.crt /usr/local/share/ca-certificates/ca.crt || true\n update-ca-certificates --fresh > /dev/null || true\n ".Перезапустите
gitlab-runner, выполнив команду:# docker restart gitlab-runnerОткройте веб-интерфейс развёрнутого GitLab.
Перейдите в репозиторий project_k / services / upgrade.
Создайте новый пайплайн: .
Запустите пайплайн New pipeline.
Запустите задачу update.
Дождитесь завершения выполнения операции.
В Vault появится новый пароль gitlab_ks_admin_password по пути secret_v2 / deployments / <LCM FQDN> / secrets / accounts. В случае использования клиентского Vault перенесите новый пароль gitlab_ks_admin_password по тому же пути.
Восстановите пароли доступа NetBox перед проведением обновления:
Зайдите на LCM-узел по SSH.
Перейдите в директорию с архивом инсталлятора.
Извлеките из архива инсталлятора
installer-ks2025.1.x-{sberlinux|ubuntu}-offline.tgzфайлыinstaller/netbox-docker/env/*.env:# tar -xzvf installer-ks2025.1.x-{sberlinux|ubuntu}-offline.tgz installer/netbox-docker/env/*.envЕсли пароли для сервисов были изменены, то укажите актуальные значения в этих файлах.
Переместите эти файлы в
/installer/data/netbox/env/на LCM-узле, заменив существующие.
Обновите файлы Docker и перезапустите сервисы:
Зайдите на LCM-узел по SSH и выполните команды, приведённые ниже.
# cd /installer/config # source settings # docker compose -f $CFG_HOME/compose.yaml up -d nexus nginx vault# docker compose -f $CFG_HOME/compose.yaml exec vault /bin/sh -c "cat /vault/config/chain-ca.pem >> /etc/ssl/certs/ca-certificates.crt"# docker compose -f $CFG_HOME/compose.yaml exec vault /bin/sh -c "cat /vault/config/chain-ca.pem >> /etc/pki/ca-trust/source/anchors/ca.crt; update-ca-trust"# docker restart vault # docker compose -f $CFG_HOME/compose.yaml exec vault /bin/sh -c "vault operator unseal" # docker compose -f $CFG_HOME/compose.yaml exec vault /bin/sh -c "vault login"
Обновите NetBox. Обновление до образа версии 4.6.0 требует создания резервной копии базы данных, правки файла netbox-compose.yml под новый образ и пересоздания тома PostgreSQL.
Важно
Резервная копия базы данных — единственная точка отката в случае ошибки. Не пропускайте этот шаг.
Зайдите на LCM-узел по SSH.
Подготовьте окружение и создайте резервную копию базы данных NetBox:
# source /installer/config/settings # docker exec netbox-postgres pg_dumpall -U netbox > /root/dump-pre46-$(date +%F).sql
Убедитесь, что резервная копия создана и не пустая:
# ls -lh /root/dump-pre46-*.sql && head -3 /root/dump-pre46-*.sql
Сохраните резервную копию файла
netbox-compose.ymlи уберите из него параметрuser: 'unit:root'— в образе NetBox 4.6.0 такого пользователя нет:# cp $CFG_HOME/netbox-compose.yml $CFG_HOME/netbox-compose.yml.pre46.bak # sed -i -E "s|^([[:space:]]*)user:[[:space:]]*'unit:root'.*|\1# user: 'unit:root'|" $CFG_HOME/netbox-compose.yml
Проверьте, что правки применились и файл compose корректен:
# grep -nE 'user:' $CFG_HOME/netbox-compose.yml # docker compose -f $CFG_HOME/netbox-compose.yml config >/dev/null && echo "YAML OK"
Пересоздайте том PostgreSQL.
Важно
Порядок команд важен: сначала создаётся каталог (
mkdir), затем меняется его владелец (chown), и только после этого запускается контейнер (up). Деструктивные шаги объединены через&&, чтобы ни один из них не выполнился после ошибки предыдущего.# docker exec netbox-postgres pg_dumpall -U netbox > dump.sql \ && docker compose -f $CFG_HOME/netbox-compose.yml down \ && mv $NETBOX_HOME/postgres $NETBOX_HOME/postgres-old \ && mkdir $NETBOX_HOME/postgres \ && chown -R 994:994 $NETBOX_HOME/{postgres,redis,redis-cache}
Убедитесь, что владелец каталога —
994:994. Если это не так, не продолжайте выполнение и разберитесь в причине:# ls -lan $NETBOX_HOME/postgres
Запустите контейнер PostgreSQL и дождитесь его готовности:
# docker compose -f $CFG_HOME/netbox-compose.yml up -d postgres # until docker exec netbox-postgres pg_isready -U netbox 2>/dev/null; do sleep 2; done # echo "postgres READY"
Восстановите данные из резервной копии:
# docker exec -i netbox-postgres psql -U netbox < dump.sql
Примечание
Сообщения
ERROR: role "netbox" already existsиdatabase "netbox" already exists— норма: роль и базу данных создаёт сам PostgreSQL при старте контейнера, а резервная копия повторно пытается создать их же. Данные при этом успешно восстанавливаются.Запустите весь стек NetBox и дождитесь готовности PostgreSQL:
# docker compose -f $CFG_HOME/netbox-compose.yml up -d # until docker exec netbox-postgres pg_isready -U netbox 2>/dev/null; do sleep 2; done
Проверьте результат обновления:
# docker compose -f $CFG_HOME/netbox-compose.yml ps # curl -sk "https://${NETBOX_NAME}.${DOMAIN}/login/" | grep -o 'data-netbox-version="[^"]*"' # docker exec netbox-postgres psql -U netbox -d netbox -c "select count(*) from dcim_device;"
Обновление прошло успешно, если все контейнеры находятся в состоянии
Up (healthy), версия NetBox —4.6.0-Docker-5.0.1, а данные на месте.После успешной проверки удалите резервные файлы:
# rm -rf $NETBOX_HOME/postgres-old # rm -f dump.sql
Обновление GitLab необходимо делать в несколько этапов. Сначала обновите GitLab до версии 17.8.7-ce.0:
Зайдите на LCM-узел по SSH.
Выполните команды:
# source /installer/config/settings # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-17.8.7-ce.0|" $CFG_HOME/compose.yamlВыполните команду:
# docker compose -f $CFG_HOME/compose.yaml up -d gitlabОбновите разрешения на доступ к файлам выполнив команду:
# docker exec -it gitlab update-permissionsДождитесь открытия страницы
https://<LCM FQDN>/admin/background_migrations.Дождитесь завершения всех задач на этой странице. Если задач нет, можете приступать к следующему шагу.
Обновите GitLab до версии 17.11.7-ce.0:
Зайдите на LCM-узел по SSH.
Выполните команды:
# source /installer/config/settings # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-17.8.7-ce.0|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-17.11.7-ce.0|" $CFG_HOME/compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d gitlabДождитесь открытия страницы
https://<LCM FQDN>/admin/background_migrations.Дождитесь завершения всех задач на этой странице. Если задач нет, можете приступать к следующему шагу.
Обновите GitLab до версии 18.2.8-ce.0:
Зайдите на LCM-узел по SSH.
Выполните команды:
# source /installer/config/settings # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-17.11.7-ce.0|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-18.2.8-ce.0|" $CFG_HOME/compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d gitlabДождитесь открытия страницы
https://<LCM FQDN>/admin/background_migrations.Дождитесь завершения всех задач на этой странице. Если задач нет, можете приступать к следующему шагу.
Обновите GitLab до версии 18.5.7-ce.0:
Зайдите на LCM-узел по SSH.
Выполните команды:
# source /installer/config/settings # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-18.2.8-ce.0|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-18.5.7-ce.0|" $CFG_HOME/compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d gitlabДождитесь открытия страницы
https://<LCM FQDN>/admin/background_migrations.Дождитесь завершения всех задач на этой странице. Если задач нет, можете приступать к следующему шагу.
Обновите GitLab до версии 18.8.10-ce.0:
Зайдите на LCM-узел по SSH.
Выполните команды:
# source /installer/config/settings # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-18.5.7-ce.0|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-18.8.10-ce.0|" $CFG_HOME/compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d gitlabДождитесь открытия страницы
https://<LCM FQDN>/admin/background_migrations.Дождитесь завершения всех задач на этой странице. Если задач нет, можете приступать к следующему шагу.
Обновите GitLab до версии ks2026.2.1 (18.11.5-ce.0):
Зайдите на LCM-узел по SSH.
Выполните команду:
# sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-18.8.10-ce.0|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE|" $CFG_HOME/compose.yamlОткройте и измените файл
/installer/data/gitlab-runner/config.toml.
В секции
[runners.docker]измените значение параметраnetwork_modeсinstallerнаhostи в параметрахhelper_image,imageзамените значение наks2026.2.1.В секции
[[runners]]добавьте параметрpre_build_script = " cp /etc/gitlab-runner/certs/ca.crt /usr/local/share/ca-certificates/ca.crt || true\n update-ca-certificates --fresh > /dev/null || true\n ".Перезапустите
gitlab-runner, выполнив команду:# docker restart gitlab-runnerВыполните команду:
# docker compose -f $CFG_HOME/compose.yaml up -d gitlab gitlab-runnerВ случае ошибок доступа к файлам выполните команду:
# docker exec -it gitlab update-permissionsКонтейнер с GitLab запускается очень долго. Проверить состояние запуска контейнера можно с помощью команды:
# docker logs gitlab -f -n 100Дождитесь открытия страницы
https://<LCM FQDN>/admin/background_migrations.Дождитесь завершения всех задач на этой странице. Если задач нет, можете приступать к следующему шагу.
(Опционально) Удалите образ Docker LCM старого релиза, выполнив команду:
# docker image prune -a
В случае если подключен внутренний Vault, дополнительно понадобится изменить значение параметра vault_addr. Для этого:
Зайдите в веб-интерфейс GitLab.
Перейдите в группу
project_k.Перейдите в раздел .
Измените значения параметра
vault_addrнаhttps://vault.<DOMAIN>.
В новой версии GitLab по умолчанию доступ с использованием токена между проектами запрещен. Обновите настройку доступа между проектами GitLab, выполнив перечисленные действия для каждого региона:
Зайдите в веб-интерфейс GitLab.
Для каждого репозитория (
project_k/etc) в разделе нажмите кнопку Add > Group or Project и добавьте группуproject_k.
Выполните команды на узле LCM:
Зайдите на LCM-узел по SSH и выполните команды:
# cd /installer/config # source settings # sed -i "s|DB_PASSWORD=.*|DB_PASSWORD=netbox_db_password|" $NETBOX_HOME/env/netbox.env # sed -i "s|REDIS_CACHE_PASSWORD=.*|REDIS_CACHE_PASSWORD=netbox_redis_cache_password|" $NETBOX_HOME/env/netbox.env # sed -i "s|REDIS_PASSWORD=.*|REDIS_PASSWORD=netbox_redis_password|" $NETBOX_HOME/env/netbox.env # sed -i "s|SUPERUSER_PASSWORD=.*|SUPERUSER_PASSWORD=netbox_admin_password|" $NETBOX_HOME/env/netbox.env # sed -i "s|AUTH_LDAP_BIND_PASSWORD: .*|AUTH_LDAP_BIND_PASSWORD: \"LDAP-BIND-PASSWORD\"|" $NETBOX_HOME/env/netbox.env # sed -i "s|POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=netbox_db_password|" $NETBOX_HOME/env/postgres.env # sed -i "s|REDIS_PASSWORD=.*|REDIS_PASSWORD=netbox_redis_password|" $NETBOX_HOME/env/redis.env # sed -i "s|REDIS_PASSWORD=.*|REDIS_PASSWORD=netbox_redis_cache_password|" $NETBOX_HOME/env/redis-cache.env