Обновление Test IT в Kubernetes

Как обновлять Test IT до последних версий

  • Если вы используете манифесты для Kubernetes, полученные от технической поддержки, вам доступно обновление до версии 4.4 Lupusopen in new window.
  • Чтобы своевременно обновлять Test IT до более поздних версийopen in new window, требуется использовать helm-чарты. Для получения инструкций обратитесь в техническую поддержку: (support@yoonion.ru).

Переход на Alpine в версии 4.6

Важно

Начиная с версии 4.6.0 в базовых образах сервисов TestIT, а также образах PostgreSQL, InfluxDB, Redis используется версия Alpine. Данное изменение уменьшает фактический размер образов и существенно снижает количество потенциальных уязвимостей контейнеров.

Пользователям PostgreSQL

Если вы используете сервер PostgreSQL из состава поставки Test IT, в процессе обновления для корректной работы сервисов необходимо переиндексировать базы данных в связи с переходом сервера на Alpine и запустить процесс обновления прав доступа (инструкцию читайте ниже).

Обновление прав доступа

  1. Произведите обновление релиза с включением параметра postgres.initPermissions:
    helm upgrade --install testit-backend testit_backend/ -n <namespace> --set postgres.initPermissions=true
    
    Параметр postgres.initPermissions достаточно использовать один раз при обновлении, позже это действие не потребуется.
  2. После окончания процесса обновления TestIT до 4.6.0 можно исключить init-контейнер из релиза, выполнив повторный запуск обновления:
    helm upgrade --install testit-backend testit_backend/ -n <namespace> --set postgres.initPermissions=false
    

Действия, описанные ниже, необходимо выполнить после запуска новой версии Test IT, т.е. после выполнения команд helm upgrade в обновленииopen in new window.

  1. Перейдите в директорию с установочными файлами версии 4.6.0 Kubernetes.
  2. Определите пространство имен (namespace), в котором запущено приложение Test IT:
    kubectl get ns
    # Здесь будут отображены доступные пространства имен
    
  3. Установите право на выполнение скрипта:
    chmod +x scripts/k8s_postgres_reindex_alpine.sh
    
  4. Запустите скрипт, заменив namespace на свое пространство имен:
    ./scripts/k8s_postgres_reindex_alpine.sh <namespace>
    # Пример: ./scripts/k8s_postgres_reindex_alpine.sh my-testit-namespace
    
  5. Убедитесь, что реиндексация баз данных прошла успешно. По окончании работы скрипта отобразится строка:
    Reindex completed successfully!
    

В случае ошибки устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru).

Подготовка к обновлению до версии 4.5

Пользователям внешних СУБД

Если вы используете внешнюю СУБД (не входящую в поставку), то вместо исполнения скрипта необходимо применить команду очистки базы данных backgrounddb вручную.

Очистка backgrounddb через СУБД из состава поставки посредством скрипта

  1. Перед выполнением скрипта очистки background_db перейдите в директорию, в которой находится папка scripts/:
    cd my-testit-directory
    ls
    # Здесь должна присутствовать папка scripts/
    
  2. Определите пространство имен (namespace), в котором запущено приложение Test IT:
    kubectl get ns
    # Здесь будут отображены доступные пространства имен
    
  3. Установите право на выполнение скрипта clean_backgrounddb.sh:
    chmod +x scripts/clean_backgrounddb.sh
    
  4. Запустите скрипт, заменив <namespace> на свое пространство имен:
    scripts/clean_backgrounddb.sh <namespace> 
    # Пример: ./scripts/clean_backgrounddb.sh my-testit-namespace
    
    Убедитесь, что очистка прошла успешно. По окончании работы скрипта отобразится строка:
     Done! Please proceed to the next update step
    
    В случае ошибки устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru).

Очистка 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 в выбранный вами локальный репозиторий. Убедитесь, что кластер имеет доступ к этому репозиторию.

  1. Создайте новую директорию, скачайте и распакуйте в ней архив с новой поставкой Helm-чарта.
  2. Сравните содержимое файлов values.yaml и values-override.yaml для внешнего и внутреннего интерфейса (frontend и backend) и перенесите пользовательские параметры в соответствующие файлы новой версии.
  3. В командной строке перейдите в директорию с новой версией и выполните следующие команды:
    # Обновите приложения бэкенда.
    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
    
Обновлено: