Переход из Docker в Kubernetes: Test IT 5.3 и более поздние версии
Внимание
- Перед переходом необходимо обновить Test IT до последней
docker-версии
, соответствующей выходу сборкиKubernetes
. - Во время перехода на Kubernetes продукт будет недоступен.
- Задайте необходимые значения переменных для проекта:
# minio_vars export TMS_BUCKET_NAME=testit export AVATARS_AWS_BUCKET_NAME=avatars # docker_vars export COMPOSE_FILE_PATH=/absolute/path/to/testit/docker-compose.yml export COMPOSE_PROJECT_PREFIX=prod export COMPOSE_NETWORK_NAME=123123_yoonion_network_local
- Выполните резервное копирование
docker-версии
Test IT:chmod +x scripts/pre_k8s_backup.sh ./scripts/pre_k8s_backup.sh
- По окончании резервного копирования сохраните путь, по которому расположен архив (он отобразится в сообщении об успешном окончании резервного копирования):
Backup successful! Archive saved at: '/path/to/testit_docker_to_k8s.tar'
- Сравните переменные из
.env
файла (в директории docker-версии продукта) сvalues.yaml:general
в директории testit_unichart :# testit_unichart/values.yaml frontend: enabled: true image: repository: "docker.testit.ru/tms-frontend/tms-frontend" tag: v5.12.0 #<--env.TMS_FRONTEND_CONTAINER_VERSION config: NGINX_JSON_LOGGING: "true" SSL_STRONG_CIPHERS: "false" webapi: enabled: true image: repository: "docker.testit.ru/testit/testit" tag: v5.10.1 #<--env.TMS_CONTAINER_VERSION config: USE_PKCE: "true" INSECURE_REMOTES: "" SYNC_RESULT_LINKS_EVERY_SEC: "120" TEST_RESULT_LINK_REQUEST_LIFETIME_SEC: "600" THREAD_PER_PROCESSOR: "10" SMTP_ENABLE: "false" SMTP_FROM: "" SMTP_HOST: "" SMTP_PORT: "" SMTP_LOGIN: "" SMTP_DOMAIN: "" SMTP_PASSWORD: "" SMTP_CONNECTION: "" SMTP_AUTHENTICATION: "" SMTP_SKIP_CERTIFICATE: "false" SMTP_TLS_VERSION: "tls" SMTP_LOG_ENABLE: "false" PERF_MODULE_ENABLED: "false" avatars-api: enabled: true image: repository: "docker.testit.ru/avatars/avatars-api" tag: v5.2.8 #<--env.AVATARS_CONTAINER_VERSION config: AVATARS_AWS_BUCKET_NAME: "avatars" auth: enabled: true image: repository: "docker.testit.ru/identity/authwebapi" tag: v5.5.0 #<--env.AUTHWEBAPI_CONTAINER_VERSION config: ASPNETCORE_ACCESS_TOKEN_EXPIRATION_MINUTES: "120" ASPNETCORE_REFRESH_TOKEN_EXPIRATION_MINUTES: "88000" postgres: config: POSTGRES_PASSWORD: "F1rstL0g0N!" POSTGRES_USER: "postgres" POSTGRES_DB: "testitdb" general: image: repository: "docker.testit.ru/testit" # <--env.TMS_DOCKER_REGISTRY/testit tag: "v5.10.1" #<--env.TMS_CONTAINER_VERSION pullPolicy: IfNotPresent # политика скачивания docker-образов (IfNotPresent, Always, Never) config: AUTH_CACHE_CONNECTION_STRING: "auth-cache" # должно соответствовать .authCache.name при стандартном запуске FRONTEND_URL: "http://localhost" RABBITMQ_DEFAULT_USER: "testit" RABBITMQ_DEFAULT_PASS: "password" RABBITMQ_DEFAULT_VHOST: "testitrabbit" RABBITMQ_DEFAULT_HOST: "rabbitmq" RABBITMQ_DEFAULT_PORT: "5672" RABBITMQ_AUTH_MODE: "plain" RABBITMQ_CLIENT_CERT_PATH: "/etc/rabbitmq/ssl/client/testit.pfx" RABBITMQ_CLIENT_CERT_PASSPHRASE: "" RABBITMQ_SSL_ENABLED: "false" AWS_CONNECTION_STRING: "http://minio:9000" # должно соответствовать .minio.name при стандартном запуске AWS_ACCESS_KEY: "testitAccessKey" AWS_SECRET_KEY: "testitSecretKey" INFLUX_CONNECTION_STRING: "http://influxdb:8086" # должно соответствовать .influxdb.name при стандартном запуске INFLUX_AUTH_ENABLED: "false" INFLUX_USERNAME: "influx" INFLUX_PASSWORD: "influxpass" TMS_BUCKET_NAME: "testit" TESTIT_DB_CONNECTION_STRING: > Host=postgres; Port=5432; Database=testitdb; Username=postgres; Password=F1rstL0g0N!; Command Timeout=30; Target Session Attributes=any; BACKGROUND_DB_CONNECTION_STRING: > Host=postgres; Port=5432; Database=backgrounddb; Username=postgres; Password=F1rstL0g0N!; Command Timeout=30; Target Session Attributes=any; GLOBALSEARCH_DB_CONNECTION_STRING: > Host=postgres; Port=5432; Database=globalsearchdb; Username=postgres; Password=F1rstL0g0N!; Command Timeout=30; Target Session Attributes=any; AUTH_DB_CONNECTION_STRING: > Host=postgres; Port=5432; Database=authdb; Username=postgres; Password=F1rstL0g0N!; Command Timeout=30; Target Session Attributes=any; LICENSE_DB_CONNECTION_STRING: > Host=postgres; Port=5432; Database=licensedb; Username=postgres; Password=F1rstL0g0N!; Command Timeout=30; Target Session Attributes=any; AVATARS_DB_CONNECTION_STRING: > Host=postgres; Port=5432; Database=avatarsdb; Username=postgres; Password=F1rstL0g0N!; Command Timeout=30; Target Session Attributes=any;
- Опционально: При необходимости, внесите изменения в отдельном файле
values-override.yaml
, раскомментировав только те строки, которые хотите поменять. Например:# testit_unichart/values-override.yaml # ... general: config: # ... # SMTP_LOG_ENABLE: # PERF_MODULE_ENABLED: POSTGRES_USER: "testituser" POSTGRES_PASSWORD: "8wkj9l!0asdk" # POSTGRES_DB: # POSTGRES_AUTH_DB: # POSTGRES_AVATARS_DB: # POSTGRES_BACKGROUND_DB: # POSTGRES_LICENSE_DB: # ... # ... frontend: replicaCount: 3 # resources: {} # ...
- Установите Test IT Kubernetes.
- Задайте необходимые значения переменных для проекта:
# Убедитесь, что вводите правильные значения переменных (testit_unichart/values.yaml или testit_unichart/values-override.yaml) # minio_vars export AWS_CONNECTION_STRING="http://minio:9000" export AWS_ACCESS_KEY="testitAccessKey" export AWS_SECRET_KEY="testitSecretKey" export TESTIT_BUCKET="testit" export AVATARS_BUCKET="avatars" # postgres_vars export POSTGRES_USER="postgres" export POSTGRES_PASSWORD="F1rstL0g0N!" export POSTGRES_HOST="postgres" export POSTGRES_PORT="5432"
- Восстановите данные из резервной копии, используя пространство имен, в котором создали
Test IT Kubernetes
и путь, который сохранили после успешного выполненияscripts/pre_k8s_backup.sh
:После успешного выполнения скрипта отобразится сообщение:# Задавать эти переменные не обязательно, скрипт может подтянуть из уже запущенных внутренних postgres и minio export NAMESPACE=<my-namespace> chmod +x scripts/move_to_k8s.sh ./scripts/move_to_k8s.sh $NAMESPACE /path/to/testit_docker_to_k8s.tar
Restore process completed successfully! Your Test IT is running on Kubernetes now! If you have SSL certificates (trusted-certificates-volume) or any other configurations to apply, you can reference the Test IT docs for guides.