Обновление Test IT в Kubernetes
Внимание
- Эта инструкция актуальна, если вы разворачивали Test IT в Kubernetes с помощью манифестов.
- В случае возникновения вопросов, рекомендуем обращаться в техническую поддержку (support@yoonion.ru).
Подготовка к обновлению до версии 4.2
Важно
Обновление до версии 4.2 осуществляется с версии 4.1.0 и выше.
Перед обновлением системы выполните следующие действия:
- Создайте резервную копию системы (рекомендуется).
- Убедитесь, что на компьютере/сервере, откуда будут исполняться скрипты, достаточно места для создания файлов дампа Postgres.
- Если вы используете внешнее объектное хранилище MiniO и/или внешнюю СУБД Postgres, а не сервисы из поставки Test IT, пропустите соответствующие разделы этой инструкции.
Миграция бакетов MiniO Kubernetes
Начиная с версии 4.2 MiniO Gateway не поддерживается. Поэтому перед обновлением необходимо выполнить миграцию бакетов MiniO и их метаданных.
- Перейдите в директорию с установочными файлами или скопируйте файл
scripts/k8s_minio_migrate.sh
и папкуjobs/minio
в удобную для вас директорию, где будет проходить миграция. Убедитесь, что на диске достаточно места для временного хранения содержимогоminio
иavatars-minio
.Внимание
Для корректной работы скрипта сохраните структуру по директориям:
scripts/ k8s_minio_migrate.sh jobs/ minio/ import/ job.yaml configmap.yaml export/ job.yaml configmap.yaml
- Задайте необходимые переменные для подключения к
minio
иavatars-minio
:# Значения в примере могут отличаться от заданных вами export AWS_CONNECTION_STRING="http://minio:9000" export AWS_ACCESS_KEY="testitAccessKey" export AWS_SECRET_KEY="testitSecretKey" export AVATARS_AWS_CONNECTION_STRING="http://avatars-minio:9000" export AVATARS_AWS_ACCESS_KEY="avatarsAccessKey" export AVATARS_AWS_SECRET_KEY="avatarsSecretKey"
- Добавьте разрешение на использование скрипта:
chmod +x ./scripts/k8s_minio_migrate.sh
- Определите пространство имен, в котором у вас запущен Test IT:
kubectl get ns # Здесь будут отображены доступные пространства имен
- Запустите скрипт, передав ему соответствующее пространство имен:Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
./scripts/k8s_minio_migrate.sh <namespace> # Пример: ./scripts/k8s_minio_migrate.sh my-testit-namespace
В случае ошибки миграции отобразитсяMigration successful!
error log
после одной из строк:В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru). По окончании миграции вы можете перейти к процессу миграции баз СУБД Postgres.Minio import job failed. Displaying logs: Minio export job failed. Displaying logs:
Миграция СУБД Postgres
Начиная с версии 4.2 в качестве основной системы управления базами данных (СУБД) используется Postgres 14. В процессе обновления необходимо выполнить дамп ваших баз данных (БД) с предыдущей версии Test IT и их восстановление в новой версии. Во время дампа и восстановления баз данных продукт будет недоступен.
Перейдите в директорию с установочными файлами или скопируйте в другую директорию файлы
scripts/k8s_postgres_migrate.sh
,scripts/k8s_postgres_migrate.env
и папкуjobs/postgres
сохраняя следующую структуру:scripts/ k8s_postgres_migrate.env k8s_postgres_migrate.sh jobs/ postgres/ import/ job.yaml configmap.yaml export/ job.yaml configmap.yaml
Задайте необходимые для выполнения скрипта переменные в файле
scripts/k8s_postgres_migrate.env
:# scripts/k8s_postgres_migrate.env # testit_db export PGUSER_1=postgres export PGHOST_1=db export PGPASSWORD_1=password # auth_db export PGUSER_2=postgres export PGHOST_2=authdb export PGPASSWORD_2=password # avatars_db export PGUSER_3=postgres export PGHOST_3=avatars-db export PGPASSWORD_3=password # background_db export PGUSER_4=postgres export PGHOST_4=backgrounddb export PGPASSWORD_4=password
Добавьте разрешение на использование скрипта:
chmod +x ./scripts/k8s_postgres_migrate.sh
Определите пространство имен, в котором у вас запущен Test IT:
kubectl get ns # Здесь будут отображены доступные пространства имен
Запустите скрипт, передав ему соответствующее пространство имен:
./scripts/k8s_postgres_migrate.sh <namespace> # Пример: ./scripts/k8s_postgres_migrate.sh my-testit-namespace
Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
Migration successful! Restarting Test IT...
В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru):
Postgres import job failed. Displaying logs: Postgres export job failed. Displaying logs:
Обновление
Важно
При оффлайн-обновлении предварительно загрузите образы из архива images.tar.gz в выбранный вами локальный репозиторий. Убедитесь, что кластер имеет доступ к этому репозиторию.
- В зависимости от вашей текущей версии Test IT, ознакомьтесь с
<old>-<new>_upgrade_plan.yaml
(<old>
- версия продукта, с которой производится обновление). - Скопируйте старые конфигурационные файлы Kubernetes в папку для новой версии, например:
mkdir ./TestIT_4.2.4_k8s cp ./TestIT_4.1.0_k8s/*.yaml ./TestIT_4.2.4_k8s/
- В соответствии с
upgrage_plan
, примените соответствующие изменения к конфигурационным файлам.yaml
. Например:transfer-service: # <--- Название деплойментa (deployments.yaml) image: ...:4.2.4 # <--- новая версия образа environment: # Edit configmap # <--- соответствующий деплойментy конфигмап (configmap.yaml) + RABBITMQ_SSL_ENABLED: "false" # <--- переменная, которую необходимо добавить/изменить/удалить
- После успешного выполнения необходимых скриптов/миграций, описанных выше, примените изменения. Например:
kubectl apply -f ./TestIT_4.2.4_k8s/ --dry-run=client # валидация конфигурации, без каких-либо фактических изменений в кластере # ^^ Опционально: можно добавить флаг -oyaml для вывода в терминал будущих объектов k8s kubectl apply -f ./TestIT_4.2.4_k8s/ # применение обновления