Перейти к содержанию

Обновление системы

Обновление при наличии доступа к внешнему репозиторию docker-образов YCR

Важно

Обновление до 2024.5 требует выполнения ряда дополнительных шагов как перед обновлением, так и после обновления перед запуском системы, детали см. в разделе «Обновление до 2024.5».

  1. Остановите Стингрей согласно инструкциям в разделе «Остановка Стингрей».
  2. Обновите специальный docker-образ для подготовки конфигурационных файлов командой:

    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest
    

    Примечание

    Версия релиза может быть указана двумя способами. Если она указана как latest, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например 2022.12 или 2023.10. В этом случае команда может выглядеть следующим образом:

    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:2023.10
    
  3. При обновлении Стингрей с версии 2022.8 (или более ранней) до версии 2023.10 необходимо выполнить несколько дополнительных шагов, связанных с изменением места хранения нескольких служебных каталогов.

    3.1. Создайте каталог с помощью команды

    sudo mkdir -p $HOME/service
    

    где $HOME — директория установки Стингрей, например /opt/stingray/stingray_docker.

    3.2. Установите утилиту rsync, если она не была установлена ранее.

    apt install rsync
    
    yum install rsync
    

    3.3. Синхронизируйте служебные каталоги с помощью утилиты rsync.

    sudo rsync -aqxP /docker/stingray/postgresql $HOME/service
    sudo rsync -aqxP /docker/stingray/rabbitmq $HOME/service
    sudo rsync -aqxP /docker/stingray/redis $HOME/service
    sudo rsync -aqxP $HOME/neo4j $HOME/service
    sudo rsync -aqxP $HOME/nginx $HOME/service
    
  4. Запустите docker-контейнер с параметром update.

    docker run -i -t -v /opt/stingray:/opt/docker-files cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest update
    

    Примечание

    Версия релиза может быть указана двумя способами. Если она указана как latest, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например 2022.12 или 2023.10.

  5. После завершения копирования новых конфигурационных файлов необходимо выполнить команду обновления образов из директории с конфигурационными файлами (в примере — /opt/stingray):

    docker-compose pull
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/android_api30:latest
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/ios:latest
    docker-compose up -d
    docker exec stingray-maintenance django-admin maintenance engines recreate
    

    Примечание

    Команда recreate пересоздает контейнеры в их ранее сохраненном состоянии, используя новые версии образов.

    Примечание

    Версия релиза может быть указана двумя способами. Если она указана как latest, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например 2022.12 или 2023.10.

    Примечание

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

    docker image prune
    

    Эта команда удалит все docker-образы без тегов (у которых тег <none>). Следует учитывать, что она не удалит образы с предыдущими версиями. Например, если была установлена версия Стингрей 2.7, а вместо нее поставили новую версию 2022.X, то старые образы не будут удалены, так как тег у старого образа будет 2.7, а не <none>.

    docker image prune -a
    

    Эта команда удалит docker-образы без тегов (у которых тег <none>) и docker-образы, которые не используются ни одним контейнером. Но если, например, ещё ни один engine контейнер для какого-нибудь нового образа не создавался (а такое может быть, например, если версия для iOS ещё не использовалась), то эта команда удалит соответствующий образ. Далее, когда возникнет необходимость создать контейнер из этого образа, то это сделать уже не удастся, так как такого образа уже не будет.

    docker image rm image_id
    

    Эта команда предназначена для индивидуального удаления образов.

  6. В случае возникновения ошибок возможна загрузка образов вручную:

    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/stingray:latest
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/android_api30:latest
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/ios:latest
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/stingray-ui:latest
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/stingray-knowledgebase:latest
    

    Примечание

    Версия релиза может быть указана двумя способами. Если она указана как latest, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например 2022.12 или 2023.10.

    После загрузки образов запустите систему согласно инструкциям в предыдущем пункте данного раздела.

  7. Если осуществляется переход с версии Стингрей 2.х на версию Стингрей 2022.X, для корректной работы вновь установленной версии необходимо однократное выполнение команды:

    docker exec stingray-maintenance django-admin maintenance engines fill_id
    

    Эта команда обеспечивает корректное взаимодействие всех компонентов системы после обновления версии. Повторное выполнение этой команды не имеет смысла, но при этом Стингрей продолжит корректно функционировать.

Обновление при отсутствии доступа к внешнему репозиторию docker-образов YCR

Важно

Обновление до 2024.5 требует выполнения ряда дополнительных шагов как перед обновлением, так и после обновления перед запуском системы, детали см. в разделе «Обновление до 2024.5».

  1. Остановите Стингрей согласно инструкциям в разделе «Остановка Стингрей».

  2. При отсутствии доступа к внешнему репозиторию docker-образов образы поставляются в виде выгруженных tar-архивов. Их необходимо запросить у поставщика продукта.

  3. После того, как архивы загружены и перенесены на сервер Стингрей, необходимо их импортировать в docker. Для этого выполните следующую команду для всех полученных архивов:

    docker load -i <archive_name>.tar
    
  4. При обновлении Стингрей с версии 2022.8 (или более ранней) до версии 2023.10 необходимо выполнить несколько дополнительных шагов, связанных с изменением места хранения нескольких служебных каталогов, согласно инструкциям в пункте 3 раздела «Обновление при наличии доступа к внешнему репозиторию docker-образов YCR».

  5. Запустите специальный конфигуратор (Wizard) с параметром update.

    docker run -i -t -v /opt/stingray-docker-compose:/opt/docker-files cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest update
    

    Примечание

    Версия релиза может быть указана двумя способами. Если она указана как latest, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например 2022.12 или 2023.10.

  6. После загрузки образов запустите систему согласно инструкциям в разделе в пунктах 5 и 7 раздела «Обновление при наличии доступа к внешнему репозиторию docker-образов YCR».

Обновление до 2024.5

Обновление до 2024.5 требует выполнения ряда дополнительных шагов как перед обновлением, так и после обновления перед запуском системы.

Перед обновлением

Обновление настроек через новый Wizard

Перед обновлением обязательно выполнить обновление настроек через новый Wizard согласно инструкции по обновлению (с параметром update).

docker run -i -t -v /opt/stingray:/opt/docker-files cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest update

После выполнения необходимо проверить наличие директорий на хостовой системе:

service/android/Stingray.avd
service/android/api30/AndroidSdk/

Миграция базы данных PostgreSQL с 12 версии на 14

Перед обновлением необходимо произвести миграцию базы данных PostgreSQL с 12 версии до 14.

  1. Выполнить остановку Engine-контейнеров.

    docker exec stingray-maintenance django-admin maintenance engines preserve
    
  2. Выполнить полную остановку Стингрей.

    docker-compose down
    
  3. Сделать бэкап текущего файла docker-compose.yml.

    cp docker-compose.yml docker-compose.yml.copy
    
  4. Внести необходимые изменения в файл docker-compose.yml - изменить блок postgres и добавить блок postgres14.

    postgres:
        image: cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:12.15-alpine
        container_name: stingray-postgres
        restart: unless-stopped
        security_opt:
            - no-new-privileges
        read_only: true
        tmpfs:
            - /run/postgresql
            - /tmp
        networks:
            - stingray-network
        env_file:
            - .env
             settings/prod.env
        volumes:
            - ./service/backup:/backup
            - ./service/postgresql/data:/var/lib/postgresql/data
    
    postgres14:
        image: cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:14.11-alpine
        container_name: stingray-postgres14
        restart: unless-stopped
        security_opt:
            - no-new-privileges
        read_only: true
        tmpfs:
            - /var/run/postgresql/
            - /tmp
        networks:
            - stingray-network
        env_file:
            - .env
            - settings/prod.env
        volumes:
            - ./service/backup:/backup
            - ./service/postgresql14/data:/var/lib/postgresql/data
    
  5. Создать дополнительные директории.

    mkdir service/postgresql14 && \
    mkdir service/backup
    
  6. Выполнить скачивание дополнительных образов.

    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:12.15-alpine && \
    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:14.11-alpine
    
  7. Выполнить запуск контейнера с базой данных PostgreSQL 12.

    docker-compose up -d postgres
    
  8. Выполнить бэкап базы данных.

    docker-compose exec -it postgres /bin/bash -c 'pg_dumpall -U $POSTGRES_USER > /backup/backup.sql'
    

    Переменная $POSTGRES_USER будет получена из окружения контейнера. Проверить корректность созданного бэкапа можно по пути в $HOME_STINGRAY/service/backup на исходном сервере.

  9. Остановить контейнер с базой данных PostgreSQL 12.

    docker-compose stop postgres
    
  10. Выполнить запуск контейнера с базой данных PostgreSQL 14.

    docker-compose up -d postgres14
    
  11. Выполнить восстановление базы данных из бэкапа.

    docker-compose exec -it postgres14 /bin/bash -c 'psql -d $POSTGRES_DB -U $POSTGRES_USER < /backup/backup.sql'
    

    Переменные $POSTGRES_DB, $POSTGRES_USER будут получены из окружения контейнера.

  12. Остановить контейнер с базой данных PostgreSQL 14.

    docker-compose stop postgres14
    
  13. Удалить экземпляр контейнера c PostgreSQL 14.

    docker-compose rm postgres14
    
  14. Выполнить перемещение папок с базами данных в файловой системе.

    mv service/postgresql service/postgresql12 && \
    mv service/postgresql14 service/postgresql
    
  15. Восстановить исходный файл docker-compose.yml.

    mv docker-compose.yml.copy docker-compose.yml
    
  16. Перетегировать образ.

    docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:latest
    

    При выполнении этого действия, образ cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:14.11-alpine получит второй тег cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:latest.

  17. Выполнить запуск проекта.

    docker-compose up -d
    
  18. Подключиться к базе данных и выполнить восстановление пароля.

    docker-compose exec -it postgres /bin/bash -c 'psql -d $POSTGRES_DB -U $POSTGRES_USER'
    ALTER USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';
    

    При выполнении команды ALTER USER переменные $POSTGRES_USER, $POSTGRES_PASSWORD необходимо взять из файла settings/prod.env.

  19. Проверить работоспособность системы и удалить остатки бэкапов и вспомогательных папок.

Обновление Wizard

  1. Для работы сервиса MARIVANNA в файле settings/prod.env необходимо указать корректные данные.

    MARIVANNA_CLIENT_ID
    MARIVANNA_CLIENT_SECRET
    MARIVANNA_BASE_URL
    STINGRAY_SERVICES_AUTH_URL
    
  2. Для корректной работы центра лицензирования.

    STINGRAY_LICENSE_CENTER_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAun4nI9ETYpDUPQ/TkudHBkcjveHFG1N6s1SQS8MeoSpWKsnY5xGU4lKAlFgvMJMr+eAiyQSKvLRL9dJxUxexlQpoCJpf0lcf/Aq21qUI+k4sfSxMY+iWSPGDH16EpUeOMK0xHPKmVm/EoaF85mbWCaxrZcnFjGgCE0HMx+Pqv6qEEqXj86UTXNFuDqZd5xsEnMaoCYlBc1xvjz0rHWEQr9rNGt5EMw97gmD2DRDc+qMmux2S3wI5t9BG2kHgpqaunyMGPiwAcQrmgH44sxgHv1iDwPd/QmG9DkvTjuMxOqVX63sKxP4HF3FmIXaiWw3VEDBTziD1K/3I5mVv2jdxGwIDAQAB
    

После обновления, перед запуском

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

  1. Необходимо выполнить целевой пулл проекта

    cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql
    cr.yandex/crp8p3a3l1ri2431n3ce/release/rabbitmq
    cr.yandex/crp8p3a3l1ri2431n3ce/release/redis
    cr.yandex/crp8p3a3l1ri2431n3ce/release/nginx
    

    или скачать дополнительные актуальные образы на машину.

    docker-compose pull
    
  2. Удалить папку с данными data из rabbitmq.

    rm -rf $HOME_STINGRAY/service/rabbitmq/data
    
К началу