Перейти к основному содержимому

Переход с ТестОпс версии 4.x на 5.x

Архитектура развертывания ТестОпс была изменена в релизе 5.x. Переход с версии 4.x на 5.x состоит из нескольких шагов и сопровождается временным простоем для пользователей.

Цель миграции, описанной в этом разделе, — перенос данных из базы данных сервиса UAA в базу данных сервиса report. После успешного объединения:

  • полученная база данных сервиса report будет использоваться в ТестОпс версии 5.x;
  • база данных сервиса UAA не будет использоваться и может быть удалена.

0. Подготовьте ваш инстанс ТестОпс

Обновитесь до последнего релиза версии 4.x.x → 4.26.5

Важно

Перед тем как продолжить, убедитесь, что ваша версия обновлена до релиза 4.26.5. Попытка обновить любую другую версию напрямую до 5.x сломает вашу установку ТестОпс, а техническая поддержка не сможет помочь восстановить ваши данные.

Если вы планируете переход с более старой версии, сначала выполните одну из инструкций по обновлению для 4.x:

После обновления до 4.26.5 убедитесь, что ТестОпс работает правильно, без ошибок.

Убедитесь, что версия вашей базы данных — 15 или выше

Внимание

ТестОпс версии 5.x не запустится на версиях PostgreSQL ниже 15.

Перед тем как обновить инстанс ТестОпс с версии 4.26.5 до любой версии 5.x, убедитесь, что ваш сервер PostgreSQL обновлен до версии 15 или выше.

1. Подготовьте новый файл конфигурации

С переходом на версию 5.х была изменена архитектура ТестОпс — сервисы gateway, UAA и report объединены в один под названием testops. Как следствие, были обновлены файлы конфигурации для развертывания ТестОпс.

Скачайте и отредактируйте новый файл конфигурации

ТестОпс версии 5.x использует новый Helm-чарт и новый файл values.yaml, который несовместим с файлом из версии 4.x. Вам необходимо создать новую конфигурацию с нуля, используя новый шаблон, и задать в ней все необходимые параметры. Большинство параметров имеют то же или похожее влияние на систему, как в ТестОпс версии 4.x, но некоторые из них имеют другие имена и структуру.

Подготовьте новый файл конфигурации:

  1. Определите номер самой последней (актуальной) версии Helm-чарта по ссылке.

  2. Загрузите архив в формате TGZ для актуального релиза Helm-чарта на компьютер, где вы планируете выполнять подготовку конфигурационного файла:

    • При работе на Unix-подобной системе используйте команду wget для загрузки архива:

      wget https://dl.qatools.ru/repository/helm-charts/testops-<latest-release-number>.tgz

      где вместо <latest-release-number> укажите номер актуальной версии Helm-чарта, например, 5.10.2.

    • В других случаях откройте эту страницу и скачайте архив вручную.

  3. Извлеките файл values.yaml из загруженного архива вручную или с помощью команды:

    tar -xzvf testops-<latest-release-number>.tgz testops/values.yaml

    где вместо <latest-release-number> укажите номер версии загруженного архива. Файл будет извлечен в директорию testops.

  4. Следуйте шагам из раздела Загрузка и изменение файла конфигурации, чтобы указать значения для всех параметров, необходимых для запуска ТестОпс, в файле values.yaml.

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

  5. Убедитесь, что вы учли все возможные отличия между конфигурациями ТестОпс версий 4.x и 5.x.

Скопируйте ключ шифрования из старого файла конфигурации в новый

Все данные интеграций (учетные данные, используемые для интеграций) хранятся в базе данных в зашифрованном виде. Шифрование данных выполняется с помощью алгоритма AES, которому требуется ключ шифрования. Этот ключ необходимо перенести из конфигурации версии 4.x в конфигурацию версии 5.x. Без его переноса интеграции перестанут работать и вам придется повторно ввести все секреты интеграций.

  1. В файле values.yaml из развертывания ТестОпс версии 4.x найдите параметр cryptoPass и его значение. Значение можно найти либо в файле values.yaml, либо в соответствующем секрете, созданном для вашего развертывания.
  2. Используйте это значение для настройки того же параметра в файле values.yaml для ТестОпс версии 5.x:
############################################################################################################
# cryptoPass parameter is used to encrypt sensitive data (passwords, API tokens in the database)
# Come up with some phrase, then use Base64 encoding, and paste encoded value here.
# In this example we user phrase "This phrase must be kept in a dark dry place." and encoded it as Base64
# phrase mustn't be changed over time, otherwise your integrations would stop working and you will need to re-submit data
############################################################################################################
cryptoPass: <укажите здесь значение параметра cryptoPass из ТестОпс версии 4.x>

2. Остановите инстанс версии 4.26.5

Чтобы избежать повреждения данных при работе с базами данных, остановите инстанс ТестОпс версии 4.x.

Мы рекомендуем закрыть все запуски и уведомить всех ваших пользователей о предстоящем периоде обслуживания.

Важно

Пожалуйста, прочтите это сообщение до конца прежде чем продолжить.

После выполнения команды, указанной ниже, все приложения, установленные в Kubernetes с помощью Helm-чарта для ТестОпс версии 4.x, будут удалены и все их данные будут утеряны.

Если базы данных или решения для хранения артефактов (MinIO) были установлены с помощью Helm-чарта и запускались в подах, то до удаления ТестОпс версии 4.x вам потребуется:

  1. Сделать полные резервные копии баз данных report и uaa.
  2. Перенести эти данные на отдельный сервер баз данных.

Мы настоятельно рекомендуем использовать развёртывание, при котором все сервисы, предназначенные для постоянного хранения данных, разворачиваются на отдельных серверах, а не устанавливаются с помощью Helm-чарта. Этот вариант позволяет более гибко управлять обновлениями и производительностью решения.

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

Чтобы удалить инстанс, выполните команду:

helm delete allure-testops

3. Объедините базы данных

Важно

Все действия в этом шаге обязательны.

В ТестОпс 4.x было задействовано две базы данных PostgreSQL. В ТестОпс 5.x используется одна база данных PostgreSQL, которая хранит информацию о пользователях, тест-кейсах и результатах тестирования.

Перед запуском ТестОпс 5.x необходимо перенести существующие данные из базы данных сервиса UAA в базу данных сервиса report.

Команды ниже используют утилиты командной строки pg_dump и pg_restore, а также переменные:

  • password_of_uaa_db_user_here — ваш пароль для базы данных сервиса UAA;
  • password_of_report_db_user_here — ваш пароль для базы данных сервиса report;
  • --host="db.example.com" — ваш реальный адрес хоста.

Резервное копирование баз данных

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

Создайте полные резервные копии баз данных сервисов UAA и report

  1. Создайте полную резервную копию базы данных сервиса report:

    # экспортируйте пароль для базы данных
    export PGPASSWORD='password_of_report_db_user_here'
    # создайте копию базы данных
    pg_dump --file=report-dump.sql \
    --host="db.example.com" --port=5432 --username=report --dbname=report
  2. Создайте полную резервную копию базы данных сервиса UAA:

    # экспортируйте пароль для базы данных
    export PGPASSWORD='password_of_uaa_db_user_here'
    # создайте копию базы данных
    pg_dump --file=uaa-dump.sql \
    --host="db.example.com" --port=5432 --username=uaa --dbname=uaa

Полученные файлы report-dump.sql и uaa-dump.sql не используются во время объединения баз данных. Однако мы рекомендуем сохранить их в качестве резервной копии для восстановления, если возникнут проблемы.

Создайте частичную копию базы данных сервиса UAA

К сведению

Эта копия будет использоваться при объединении баз данных.

  1. Экспортируйте пароль для базы данных сервиса UAA, чтобы инструмент pg_dump мог его использовать.

    export PGPASSWORD='password_of_uaa_db_user_here'
  2. Создайте частичную копию базы данных сервиса UAA:

    Важно

    В команде ниже обновите параметр --schema, если вы используете схему базы данных, отличную от public.

    Дополнительно убедитесь, что вы изменяете только аргументы, связанные с аутентификацией. Удаление или изменение других аргументов может привести к неудачному объединению баз данных.

    pg_dump --file=uaa_for_merge.dump \
    --host="db.example.com" --username=uaa --role=uaa --dbname="uaa" \
    --schema="public" \
    --exclude-table-data="databasechangelog" \
    --exclude-table-data="databasechangeloglock" \
    --exclude-table-data="shedlock" \
    --format=c --blobs --encoding=UTF8 --compress=9 \
    --no-owner --no-privileges --no-comments --verbose

    Команда выведет подробный лог. Убедитесь, что в выводе нет сообщений об ошибках.

Импортируйте частичную копию базы данных сервиса UAA в базу данных сервиса report

На этом этапе частичная копия, созданная на предыдущем этапе, будет загружена в базу данных сервиса report:

  1. Экспортируйте пароль для базы данных сервиса report, чтобы инструмент pg_restore мог его использовать.

    export PGPASSWORD='password_of_report_db_user_here'
  2. Загрузите частичную копию базы данных сервиса UAA (из предыдущего этапа) в базу данных сервиса report для восстановления.

    Важно

    В команде ниже обновите параметр --schema, если вы используете схему базы данных, отличную от public.

    pg_restore --host="db.example.com" \
    --username="report" --role="report" --dbname="report" \
    --no-owner --no-privileges --verbose \
    --schema "public" \
    "uaa_for_merge.dump"

    Команда выведет подробный лог. Убедитесь, что в выводе нет сообщений об ошибках, кроме незначительных:

    • function "now_epoch_mills" already exists;
    • relation "databasechangelog" already exists;
    • relation "databasechangeloglock" already exists;
    • multiple primary keys for table "databasechangeloglock" are not allowed;
    • ошибки, связанные с доступностью таблицы shedlock.

    Если на этом этапе возникнут другие ошибки, пожалуйста, обратитесь в службу поддержки перед тем, как продолжить (выберите приоритет «Срочно» при создании заявки).

Импортируйте лог изменений базы данных сервиса UAA в итоговую базу данных сервиса report

Важно

Действия, описанные ниже, обязательны.

Скачайте файл insert_to_changelog.sql (лог изменений базы данных сервиса UAA) и импортируйте его в итоговую базу данных сервиса report, полученную на предыдущем этапе:

  1. Экспортируйте пароль для базы данных сервиса report, чтобы инструмент psql мог его использовать.

    export PGPASSWORD='password_of_report_db_user_here'
  2. Импортируйте лог изменений базы данных сервиса UAA в итоговую базу данных сервиса report, полученную на предыдущем этапе.

    psql --file="insert_to_changelog.sql" \
    --host="db.example.com" --port=5432 --username=report --dbname=report

4. Запустите инстанс версии 5.x

Настройка подключения к базе данных

База данных для ТестОпс версии 5.х — обновленная база данных сервиса report, которую мы получили на предыдущих этапах.

Чтобы запустить ТестОпс 5.x, следуйте инструкциям из разделов Установка чарта и Развертывание приложения.