Обновление 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 и их метаданных.

  1. Перейдите в директорию с установочными файлами или скопируйте файл 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
    
  2. Задайте необходимые переменные для подключения к 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"
    
  3. Добавьте разрешение на использование скрипта:
    chmod +x ./scripts/k8s_minio_migrate.sh
    
  4. Определите пространство имен, в котором у вас запущен Test IT:
    kubectl get ns
    # Здесь будут отображены доступные пространства имен
    
  5. Запустите скрипт, передав ему соответствующее пространство имен:
    ./scripts/k8s_minio_migrate.sh <namespace>
    # Пример: ./scripts/k8s_minio_migrate.sh my-testit-namespace
    
    Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
    Migration successful!
    
    В случае ошибки миграции отобразится error log после одной из строк:
    Minio import job failed. Displaying logs:
    Minio export job failed. Displaying logs:
    
    В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru). По окончании миграции вы можете перейти к процессу миграции баз СУБД Postgres.

Миграция СУБД Postgres

Начиная с версии 4.2 в качестве основной системы управления базами данных (СУБД) используется Postgres 14. В процессе обновления необходимо выполнить дамп ваших баз данных (БД) с предыдущей версии Test IT и их восстановление в новой версии. Во время дампа и восстановления баз данных продукт будет недоступен.

  1. Перейдите в директорию с установочными файлами или скопируйте в другую директорию файлы 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
    
  2. Задайте необходимые для выполнения скрипта переменные в файле 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
    
  3. Добавьте разрешение на использование скрипта:

    chmod +x ./scripts/k8s_postgres_migrate.sh
    
  4. Определите пространство имен, в котором у вас запущен Test IT:

    kubectl get ns
    # Здесь будут отображены доступные пространства имен
    
  5. Запустите скрипт, передав ему соответствующее пространство имен:

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

  1. В зависимости от вашей текущей версии Test IT, ознакомьтесь с <old>-<new>_upgrade_plan.yaml (<old> - версия продукта, с которой производится обновление).
  2. Скопируйте старые конфигурационные файлы Kubernetes в папку для новой версии, например:
    mkdir ./TestIT_4.2.4_k8s
    cp ./TestIT_4.1.0_k8s/*.yaml ./TestIT_4.2.4_k8s/
    
  3. В соответствии с upgrage_plan, примените соответствующие изменения к конфигурационным файлам .yaml. Например:
    transfer-service: # <--- Название деплойментa (deployments.yaml)
      image: ...:4.2.4 # <--- новая версия образа
      environment: # Edit configmap # <--- соответствующий деплойментy конфигмап (configmap.yaml)
        + RABBITMQ_SSL_ENABLED: "false" # <--- переменная, которую необходимо добавить/изменить/удалить
    
  4. После успешного выполнения необходимых скриптов/миграций, описанных выше, примените изменения. Например:
    kubectl apply -f ./TestIT_4.2.4_k8s/ --dry-run=client # валидация конфигурации, без каких-либо фактических изменений в кластере
    #                                   ^^ Опционально: можно добавить флаг -oyaml для вывода в терминал будущих объектов k8s
    kubectl apply -f ./TestIT_4.2.4_k8s/ # применение обновления