Обновление LCM ks2024.2 → ks2024.3¶
Шаги для обновления с версии ks2024.2 на ks2024.3 будут отличаться от предыдущей инструкции Обновление LCM ks2024.1 → ks2024.2. В первую очередь это касается GitLab, поскольку обновление для него потребуется делать в два этапа. Также обратите внимание на этап работы с Nexus: при переходе на более новую версию меняется база данных с настройками.
Загрузите и подготовьте пакет обновления:
Зайдите на LCM-узел по SSH.
Загрузите архив
upgrade-ks2024.3-sberlinux.tgzв папку/installer/update.Убедитесь, что в этой папке нет других файлов или папок, при необходимости удалите их.
Убедитесь, что в точке монтирования
/имеется более 200 Гб свободного пространства. Это необходимо для успешного выполнения обновления.Для последующего обновления репозитория в GitLab, выполните команду:
# git config --global --add safe.directory '*'Замените в файле
/installer/config/settingsстрокуexport RELEASE=ks2024.2-sberlinuxнаexport RELEASE=ks2024.3-sberlinux.Добавьте строки в файл
/installer/config/settings:export NEXUS_FQDN=nexus.$DOMAIN export CURL_CA_BUNDLE=/installer/data/ca/cert/chain-ca.pem
Зайдите на LCM-узел по SSH.
Загрузите архив
upgrade-ks2024.3-ubuntu.tgzв папку/installer/update.Убедитесь, что в этой папке нет других файлов или папок, при необходимости удалите их.
Убедитесь, что в точке монтирования
/имеется более 200 Гб свободного пространства. Это необходимо для успешного выполнения обновления.Для последующего обновления репозитория в GitLab, выполните команду:
# git config --global --add safe.directory '*'Замените в файле
/installer/config/settingsстрокуexport RELEASE=ks2024.2-ubuntuнаexport RELEASE=ks2024.3-ubuntu.Добавьте строки в файл
/installer/config/settings:export NEXUS_FQDN=nexus.$DOMAIN export CURL_CA_BUNDLE=/installer/data/ca/cert/chain-ca.pem
Обновите параметры в Nexus:
Зайдите в веб-интерфейс Nexus по адресу
https://nexus.cloud.itkey.com.Удалите существующий репозиторий
sberlinux.Создайте репозитории
docker-sberlinuxиsberlinuxс типомhostedи форматомyum.Укажите параметры:
Repodata Depth:
0Layout Policy:
StrictDeployment Policy:
Disable redeploy
Зайдите в веб-интерфейс Nexus по адресу
https://nexus.cloud.itkey.com.Создайте репозитории
docker-ubuntuиubuntuс типомhostedи форматомapt.Укажите параметры:
Distribution:
jammySigning Key:
<Скопируйте значение из настроек репозитория ubuntu22.04>Deployment Policy:
Disable redeploy
Восстановите пароли доступа NetBox перед проведением обновления:
Зайдите на LCM-узел по SSH.
Извлеките из архива инсталлятора файлы
installer/netbox-docker/env/*.env.Переместите эти файлы в
/installer/data/netbox/env/на LCM-узле, заменив существующие.
Запустите пайплайн обновления:
Перейдите в веб-интерфейс GitLab.
Найдите репозиторий project_k / deployments / bifrost и удалите его. Для этого перейдите в и нажмите Delete project.
Перейдите в репозиторий project_k / services / upgrade.
Перейдите в раздел .
Установите значение Timeout —
5h.Запустите пайплайн Run pipeline по умолчанию. Дождитесь его завершения.
Обновите файлы Docker и перезапустите сервисы:
Перейдите на LCM-узел и выполните команды, приведенные ниже.
# cd /installer/config # source settings # sed -i "/netbox.dump/d" $CFG_HOME/netbox-compose.yml # docker compose -f $CFG_HOME/netbox-compose.yml up -d # docker compose -f $CFG_HOME/compose.yaml up -d nginx # docker compose -f $CFG_HOME/compose.yaml up -d 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"# 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 compose -f $CFG_HOME/compose.yaml exec vault /bin/sh -c "cat /vault/config/chain-ca.pem >> /etc/ssl/certs/ca-certificates.crt"# 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" # docker compose -f $CFG_HOME/compose.yaml exec vault /bin/sh -c "vault write auth/jwt/role/itkey-deployments - <<EOF { \"role_type\": \"jwt\", \"policies\": [\"secret_v2/deployments\"], \"token_explicit_max_ttl\": 3600, \"user_claim\": \"user_email\", \"bound_audiences\": \"http://vault:8200\", \"bound_claims\": { \"namespace_id\": [\"3\", \"4\"] } } EOF "
Обновление GitLab необходимо делать в два этапа. Сначала обновите GitLab до версии 16.11.10:
Зайдите на LCM-узел по SSH.
Выполните команды:
# sed -i "s|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/gitlab:\$RELEASE|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/gitlab:\$RELEASE-16.11.10-ce.0|" compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d gitlabДождитесь запуска или завершения работы контейнера. Проверить состояние запуска контейнера можно с помощью команды:
# docker logs gitlab -f -n 100Примечание
Если в процессе запуска контейнер завершил свою работу, то перейдите к следующему пункту.
Обновите GitLab до версии ks2024.3:
Зайдите на LCM-узел по SSH.
Выполните команды:
# sed -i "s|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/gitlab:\$RELEASE-16.11.10-ce.0|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/gitlab:\$RELEASE|" compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d gitlab gitlab-runnerКонтейнер с GitLab поднимается очень долго. Проверить состояние запуска контейнера можно с помощью команды:
# docker logs gitlab -f -n 100Дождитесь когда откроется страница
https://ks-lcm.cloud.itkey.com/admin/background_migrations.Дождитесь завершения всех задач на этой странице.
Обновление Nexus с ks2024.х на ks2024.3 и позднее невозможно сделать напрямую, поскольку меняется база данных с настройками: https://help.sonatype.com/en/migrating-to-a-new-database.html .
Выполните резервное копирование базы данных Nexus штатными средствами в папку внутри контейнера /nexus-data/backup-db:
Зайдите на LCM-узел по SSH.
Запустите контейнер Nexus:
# sed -i "s|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/nexus3:\$RELEASE|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/nexus3:\$RELEASE-3.70.3|" compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d nexusЗайдите в веб-интерфейс Nexus по адресу
https://nexus.cloud.itkey.com.Перейдите в раздел .
Запустите готовую задачу Admin - Export databases for backup.
![]()
Резервное копирование базы данных Nexus¶
Дождитесь выполнения задачи. Статус задачи должен смениться с Running на Waiting, а Last Result на OK.
Выполните конвертацию базы данных Nexus в новый формат:
Зайдите на LCM-узел по SSH.
Выполните команды:
# docker compose -f $CFG_HOME/compose.yaml exec nexus /bin/sh -c "cp /nexus-db-migrator-3.70.3-01.jar /nexus-data/backup-db/nexus-db-migrator-3.70.3-01.jar" # docker stop nexus # docker run -it --rm --net host -v /installer/data/nexus/:/nexus-data $NEXUS_NAME.$DOMAIN/project_k/lcm/nexus3:$RELEASE-3.70.3 /bin/bash bash-4.4$ cd /nexus-data/backup-db/ bash-4.4$ java -Xmx16G -Xms16G -XX:+UseG1GC -XX:MaxDirectMemorySize=28672M -jar nexus-db-migrator-*.jar --migration_type=h2 -y bash-4.4$ cp nexus.mv.db /nexus-data/db/ bash-4.4$ echo "nexus.datastore.enabled = true" >> /nexus-data/etc/nexus.properties bash-4.4$ exit # docker start nexus # sed -i "s|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/nexus3:\$RELEASE-3.70.3|\$NEXUS_NAME.\$DOMAIN/project_k/lcm/nexus3:\$RELEASE|" compose.yaml # docker compose -f $CFG_HOME/compose.yaml up -d nexus
Обновите переменные в GitLab:
Перейдите в веб-интерфейс развернутого GitLab.
Перейдите в меню Groups и откройте группу
project_k.Перейдите в раздел и добавьте новые переменные:
NEXUS_USER:admin
NEXUS_FQDN:nexus.$DOMAIN(Опционально) В группах
deploymentsиservicesперейдите в раздел и переместите все переменные в группу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