Обновление Test IT в Kubernetes
Если вы используйте версии Test IT Enterprise до 4.6 включительно, следуйте соответствующим инструкциям на этой странице.
Обновление
Важно
При автономном обновлении предварительно загрузите образы из архива images.tar.gz
в выбранный вами локальный репозиторий. Убедитесь, что кластер имеет доступ к этому репозиторию.
- Создайте новую директорию, скачайте и распакуйте в ней архив с новой поставкой Helm-чарта.
- Сравните содержимое файлов
values.yaml
иvalues-override.yaml
для внешнего и внутреннего интерфейса (frontend и backend) и перенесите пользовательские параметры в соответствующие файлы новой версии. - В командной строке перейдите в директорию с новой версией и выполните следующие команды:
# Обновите приложения бэкенда. helm upgrade --install --reset-values -f testit_backend/values-override.yaml -n <namespace> --create-namespace testit-backend testit_backend/ # Дождитесь начала работы всех модулей бэкенда (все поды в статусе Running). watch -n 1 kubectl -n <namespace> get pods # Обновите внешний интерфейс (фронтенд). helm upgrade --install --reset-values -f testit_frontend/values-override.yaml -n <namespace> --create-namespace testit-frontend testit_frontend/ # Дождитесь начала работы всех модулей внешнего интерфейса watch -n 1 kubectl -n <namespace> get pods -l app=frontend
Как обновлять Test IT до последних версий
- Если вы используете манифесты для Kubernetes, полученные от технической поддержки, вам доступно обновление до версии 4.4 Lupus.
- Чтобы своевременно обновлять Test IT до более поздних версий, требуется использовать helm-чарты. Для получения инструкций обратитесь в техническую поддержку: (support@yoonion.ru).
Переход на unichart в версии 5.3.0
Для случаев, когда k8s-версия продукта обновляется с 5.2.x на 5.3.0, необходимо произвести миграцию объектов k8s на новый чарт:
- (рекомендуется) Выполните резервное копирование для сохранности данных, запустив
scripts/k8s_backup.sh
. - Удалите чарты предыдущей версии:
export NAMESPACE=<my-namespace> # Убеждаемся, что в выбранном пространстве имен присутствуют helm list -n $NAMESPACE | grep testit # Удаляем установленные чарты testit # NOTE: Названия чартов приведены для примера и могут отличаться в зависимости от того, какими командами они устанавливались helm -n $NAMESPACE uninstall testit-backend helm -n $NAMESPACE uninstall testit-frontend # Рекомендуется удостовериться, что при удалении чартов не были удалены тома памяти kubectl -n $NAMESPACE get pvc # NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE # auth-cache-pv-claim-auth-cache-0 # influxdb-pv-claim-influxdb-0 # minio-pv-claim-minio-0 # postgres-pv-claim-postgres-0 # rabbitmq-pv-claim-rabbitmq-0
- Удалите pvc RabbitMQ.В поставку 5.3.0 вошел обновленный docker образ для RabbitMQ. В связи с этим, для избегания несовместимости, pvc rabbitmq-pv-claim-rabbitmq-0 нужно удалить. В противном случае при старте возникнет ошибка
kubectl -n $NAMESPACE delete pvc rabbitmq-pv-claim-rabbitmq-0
Error during startup: {error,failed_to_initialize_feature_flags_registry}
- Если были какие-либо дополнительные настройки в
(testit_backend | testit_frontend)/values-override.yaml
- перенесите их в соответствующие поля вtestit_unichart/values-override.yaml
. - Выполните установку продукта через новый Helm-чарт:
cd <installation_folder> helm upgrade --install -f testit_unichart/values-override.yaml -n <my-namespace> --create-namespace testit testit_unichart/ --wait --timeout 10m # Дождитесь начала работы всех компонентов продукта. watch -n 1 kubectl -n <my-namespace> get pods
- Опционально: Выполните восстановление данных (из п.1) с помощью
scripts/k8s_restore.sh
, если тома памяти не сохранились во время миграции, или замечена потеря данных.
Переход на Alpine в версии 4.6
Важно
Начиная с версии 4.6.0 в базовых образах сервисов Test IT, а также образах PostgreSQL, InfluxDB, Redis используется версия Alpine. Данное изменение уменьшает фактический размер образов и существенно снижает количество потенциальных уязвимостей контейнеров.
Пользователям PostgreSQL
Если вы используете сервер PostgreSQL из состава поставки Test IT, в процессе обновления для корректной работы сервисов необходимо переиндексировать базы данных в связи с переходом сервера на Alpine и запустить процесс обновления прав доступа (инструкцию читайте ниже).
Обновление прав доступа
- Произведите обновление релиза с включением параметра
postgres.initPermissions
:Параметрhelm upgrade --install testit-backend testit_backend/ -n <namespace> --set postgres.initPermissions=true
postgres.initPermissions
достаточно использовать один раз при обновлении, позже это действие не потребуется. - После окончания процесса обновления Test IT до 4.6.0 можно исключить init-контейнер из релиза, выполнив повторный запуск обновления:
helm upgrade --install testit-backend testit_backend/ -n <namespace> --set postgres.initPermissions=false
Действия, описанные ниже, необходимо выполнить после запуска новой версии Test IT, т.е. после выполнения команд helm upgrade
в обновлении.
- Перейдите в директорию с установочными файлами версии 4.6.0 Kubernetes.
- Определите пространство имен (namespace), в котором запущено приложение Test IT:
kubectl get ns # Здесь будут отображены доступные пространства имен
- Установите право на выполнение скрипта:
chmod +x scripts/k8s_postgres_reindex_alpine.sh
- Запустите скрипт, заменив
namespace
на свое пространство имен:./scripts/k8s_postgres_reindex_alpine.sh <namespace> # Пример: ./scripts/k8s_postgres_reindex_alpine.sh my-testit-namespace
- Убедитесь, что реиндексация баз данных прошла успешно. По окончании работы скрипта отобразится строка:
Reindex completed successfully!
В случае ошибки устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru).
Подготовка к обновлению до версии 4.5
Пользователям внешних СУБД
Если вы используете внешнюю СУБД (не входящую в поставку), то вместо исполнения скрипта необходимо применить команду очистки базы данных backgrounddb
вручную.
Очистка backgrounddb через СУБД из состава поставки посредством скрипта
- Перед выполнением скрипта очистки background_db перейдите в директорию, в которой находится папка scripts/:
cd my-testit-directory ls # Здесь должна присутствовать папка scripts/
- Определите пространство имен (namespace), в котором запущено приложение Test IT:
kubectl get ns # Здесь будут отображены доступные пространства имен
- Установите право на выполнение скрипта
clean_backgrounddb.sh
:chmod +x scripts/clean_backgrounddb.sh
- Запустите скрипт, заменив
<namespace>
на свое пространство имен:Убедитесь, что очистка прошла успешно. По окончании работы скрипта отобразится строка:scripts/clean_backgrounddb.sh <namespace> # Пример: ./scripts/clean_backgrounddb.sh my-testit-namespace
В случае ошибки устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru).Done! Please proceed to the next update step
Очистка backgrounddb во внешней СУБД (не входит в поставку)
При использовании внешней СУБД необходимо подключиться к ней, выбрать базу данных backgrounddb
и произвести удаление следующих таблиц:
- public."SearchItems"
- public."Resources"
- public."Projects"
- public."__EFMigrationsHistory
Чтобы удалить background_db, примените команду:
DROP TABLE IF EXISTS public."SearchItems", public."Resources", public."Projects", public."__EFMigrationsHistory";
Обновление
Важно
При автономном обновлении предварительно загрузите образы из архива images.tar.gz
в выбранный вами локальный репозиторий. Убедитесь, что кластер имеет доступ к этому репозиторию.
- Создайте новую директорию, скачайте и распакуйте в ней архив с новой поставкой Helm-чарта.
- Сравните содержимое файлов
values.yaml
иvalues-override.yaml
и перенесите пользовательские параметры в соответствующие файлы новой версии. - В командной строке перейдите в директорию с новой версией и выполните следующие команды:
# Зафиксируйте название пространства имен K8S export NAMESPACE=<my-namespace> # Обновите приложение командой helm upgrade --install --reset-values -f testit_unichart/values-override.yaml -n $NAMESPACE --create-namespace testit testit_unichart/ --wait --timeout 10m # Дождитесь начала работы всех компонентов (все поды в статусе Running). watch -n 1 kubectl -n $NAMESPACE get pods