Обновление LCM ks2025.1.1 → ks2025.2.2

Обновление с ks2025.1.1 на следующую по порядку версию гарантирует, что все новые возможности будут внедрены правильно. Данный этап можно считать обязательной частью обновления LCM-узла.

Загрузите и подготовьте пакет обновления:

  1. Зайдите на LCM-узел по SSH.

  2. Загрузите архив upgrade-ks2025.2.2-sberlinux.tgz в папку /installer/update.

  3. Убедитесь, что в этой папке нет других файлов или папок, при необходимости удалите их.

  4. Убедитесь, что в точке монтирования / имеется более 200 Гб свободного пространства. Это необходимо для успешного выполнения обновления.

  5. Замените в файлах ~/installer/settings и /installer/config/settings строку export RELEASE=ks2025.1.1-sberlinux на export RELEASE=ks2025.2.2-sberlinux.

Запустите пайплайн обновления:

  1. Откройте веб-интерфейс развёрнутого GitLab.

  2. Перейдите в репозиторий project_k / deployments / bifrost и удалите его. Для этого перейдите в Project settings > Advanced и нажмите Delete project.

  3. Перейдите в репозиторий project_k / deployments / region1 и удалите его. Для этого перейдите в Project settings > Advanced и нажмите Delete project.

  4. Перейдите в репозиторий project_k / services / upgrade.

  5. Перейдите в раздел Settings > CI/CD > General pipelines.

  6. Установите значение Timeout5h.

  7. Запустите пайплайн Run pipeline по умолчанию. Дождитесь его завершения.

  8. Если пайплайн завершается с ошибкой, то:

    1. Повторно загрузите архив upgrade-ks2025.2.2-sberlinux.tgz в папку /installer/update.

    2. Повторно запустите пайплайн по умолчанию и дождитесь его завершения.

  9. В Vault появится новый пароль по адресу deployments/<GITLAB_FQDN>/secrets/accountsgitlab_ks_admin_password. В случае использования клиентского Vault, перенести его туда по тому же адресу.

Восстановите пароли доступа NetBox перед проведением обновления:

  1. Зайдите на LCM-узел по SSH.

  2. Извлеките из архива инсталлятора файлы installer/netbox-docker/env/*.env.

  3. Переместите эти файлы в /installer/data/netbox/env/ на LCM-узле, заменив существующие.

Обновите файлы Docker и перезапустите сервисы:

  1. Зайдите на LCM-узел по SSH и выполните команды, приведенные ниже.

    # cd /installer/config
    # source settings
    # docker compose -f $CFG_HOME/compose.yaml up -d nexus nginx vault
    
  2. Откройте и измените файл compose.yaml в секции nginx добавьте новый volume:

    volumes:
        - /installer/data/nginx/repo:/var/www/repository/sberlinux
    
  3. Откройте и измените файл /installer/data/nginx/nginx.conf в секции server для Nexus добавьте новый location:

    location /repository/sberlinux {
        index index.html index.htm;
        root /var/www;
        autoindex on;
    }
    
  4. Зайдите в веб-интерфейс Nexus и примите лицензионное соглашение.

  5. Зайдите на LCM-узел по SSH и выполните следующие команды:

    # 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, для этого зайдите на LCM-узел по SSH и выполните команды, приведенные ниже.

# sed -i "/netbox.dump/d" $CFG_HOME/netbox-compose.yml
# 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 /installer/data/netbox/postgres/
# chown -R 994:994 $NETBOX_HOME/{postgres,redis,redis-cache}
# docker compose -f $CFG_HOME/netbox-compose.yml up -d postgres
# cp dump.sql $NETBOX_HOME/postgres/
# chown -R 994:994 $NETBOX_HOME/postgres/dump.sql
# docker exec -ti netbox-postgres bash
# cd /var/lib/postgresql/data/
# psql -U netbox < dump.sql
# exit
# docker compose -f $CFG_HOME/netbox-compose.yml up -d
# rm -rf $NETBOX_HOME/postgres-old/

Обновление GitLab необходимо делать в несколько этапов. Сначала обновите GitLab до версии 17.8.7-ce.0:

  1. Зайдите на LCM-узел по SSH.

  2. Выполните команду:

    # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-17.8.7-ce.0|" compose.yaml
    
  3. Откройте и измените файл compose.yaml:

    1. В секции GITLAB_OMNIBUS_CONFIG измените значение gitlab_rails['databases']['ci']['enable'] на true.

    2. В секцию GITLAB_OMNIBUS_CONFIG `` добавьте значение ``gitlab_rails['packages_enabled'] = false.

  4. Выполните команду:

    # docker compose -f $CFG_HOME/compose.yaml up -d gitlab
    
  5. В случае ошибок доступа к файлам, выполните команду:

    # docker exec -it gitlab update-permissions
    
  6. Дождитесь когда откроется страница https://ks-lcm.cloud.itkey.com/admin/background_migrations.

  7. Дождитесь завершения всех задач на этой странице.

Обновите GitLab до версии 17.11.7-ce.0:

  1. Зайдите на LCM-узел по SSH.

  2. Выполните команды:

    # 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|" compose.yaml
    # docker compose -f $CFG_HOME/compose.yaml up -d gitlab
    
  3. Дождитесь когда откроется страница https://ks-lcm.cloud.itkey.com/admin/background_migrations.

  4. Дождитесь завершения всех задач на этой странице.

Обновите GitLab до версии ks2025.2.2:

  1. Зайдите на LCM-узел по SSH.

  2. Выполните команду:

    # sed -i "s|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE-17.11.7-ce.0|\$NEXUS_FQDN/project_k/lcm/gitlab:\$RELEASE|" compose.yaml
    
  3. Откройте и измените файл /installer/data/gitlab-runner/config.toml.

    1. В секции [runners.docker] измените значение параметра network_mode с installer на host и в параметре helper_image замените значение на ks2025.2.2.

    2. В секции [[runners]] добавьте параметр pre_build_script = "  cp /etc/gitlab-runner/certs/ca.crt /usr/local/share/ca-certificates/ca.crt\n  update-ca-certificates --fresh > /dev/null\n  ".

  4. Выполните команду:

    # docker compose -f $CFG_HOME/compose.yaml up -d gitlab gitlab-runner
    
  5. В случае ошибок доступа к файлам, выполните команду:

    # docker exec -it gitlab update-permissions
    
  6. Контейнер с GitLab поднимается очень долго. Проверить состояние запуска контейнера можно с помощью команды:

    # docker logs gitlab -f -n 100
    
  7. Дождитесь когда откроется страница https://ks-lcm.cloud.itkey.com/admin/background_migrations.

  8. Дождитесь завершения всех задач на этой странице.

  9. (Опционально) Удалите докер-образа LCM старого релиза, выполнив команду:

    # docker image prune -a
    
  10. Зайдите в веб-интерфейс GitLab.

  11. Перейдите в группу project_k.

  12. Перейдите в раздел Settings > CI/CD > Variables.

  13. Изменить значения параметра vault_addr на https://vault.DOMAIN. Действие не нужно выполнять, если подключен внутренний Vault.

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

  1. Зайдите в веб-интерфейс GitLab.

  2. Перейдите в репозиторий вашего региона project_k / deployments / <имя региона>.

  3. Перейдите в раздел Settings > CI/CD > Job token permissions.

  4. Разрешите использование job-токена из всех проектов, для этого включите опцию All groups and projects.

Выполните команды на узле LCM:

  1. Зайдите на 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