Переход из 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: "registry.testit.software/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:
config:
AWS_CONNECTION_STRING: "http://minio:9000"
AWS_CREATE_BUCKET_IF_REQUIRED: "true"
TMS_BUCKET_NAME: "testit"
COMPlus_EnableDiagnostics: "0"
INFLUX_CONNECTION_STRING: "http://influxdb:8086"
INFLUX_AUTH_ENABLED: "false"
RABBITMQ_DEFAULT_HOST: "rabbitmq"
RABBITMQ_SSL_ENABLED: "false"
RABBITMQ_DEFAULT_PORT: "5672"
RABBITMQ_DEFAULT_VHOST: "testitrabbit"
RABBITMQ_AUTH_MODE: "plain"
RABBITMQ_CLIENT_CERT_PASSPHRASE: ""
RABBITMQ_CLIENT_CERT_PATH: "/etc/rabbitmq/ssl/client/testit.pfx"
APPLICATION__CONFIGURATION__CUSTOMFILEPATH: "/app/customs/appsettings.json"
FRONTEND_URL: "http://frontend:8080"
CHECK_DB_READY: "true"
secrets:
AWS_ACCESS_KEY: "testitAccessKey"
AWS_SECRET_KEY: "testitSecretKey"
INFLUX_USERNAME: "influx"
INFLUX_PASSWORD: "influxpass"
RABBITMQ_DEFAULT_USER: "testit"
RABBITMQ_DEFAULT_PASS: "password"
AUTH_CACHE_CONNECTION_STRING: "auth-cache"
TESTIT_DB_CONNECTION_STRING: >
Host=postgres;
Port=5432;
Database=testitdb;
Username=postgres;
Password=F1rstL0g0N!;
Command Timeout=30;
Target Session Attributes=any;
Pooling=true;
Maximum Pool Size=130;
BACKGROUND_DB_CONNECTION_STRING: >
Host=postgres;
Port=5432;
Database=backgrounddb;
Username=postgres;
Password=F1rstL0g0N!;
Command Timeout=30;
Target Session Attributes=any;
Pooling=true;
Maximum Pool Size=130;
GLOBALSEARCH_DB_CONNECTION_STRING: >
Host=postgres;
Port=5432;
Database=globalsearchdb;
Username=postgres;
Password=F1rstL0g0N!;
Command Timeout=30;
Target Session Attributes=any;
Pooling=true;
Maximum Pool Size=130;
AUTH_DB_CONNECTION_STRING: >
Host=postgres;
Port=5432;
Database=authdb;
Username=postgres;
Password=F1rstL0g0N!;
Command Timeout=30;
Target Session Attributes=any;
Pooling=true;
Maximum Pool Size=130;
LICENSE_DB_CONNECTION_STRING: >
Host=postgres;
Port=5432;
Database=licensedb;
Username=postgres;
Password=F1rstL0g0N!;
Command Timeout=30;
Target Session Attributes=any;
Pooling=true;
Maximum Pool Size=130;
AVATARS_DB_CONNECTION_STRING: >
Host=postgres;
Port=5432;
Database=avatarsdb;
Username=postgres;
Password=F1rstL0g0N!;
Command Timeout=30;
Target Session Attributes=any;
Pooling=true;
Maximum Pool Size=130;
- Опционально: При необходимости, внесите изменения в отдельном файле
values-override.yaml
, раскомментировав только те строки, которые хотите поменять. Например:# testit_unichart/values-override.yaml # ... general: config: # AUTH_CACHE_CONNECTION_STRING: "auth-cache:6379,ssl=true" # INFLUX_CONNECTION_STRING: "https://influxdb:8086" RABBITMQ_SSL_ENABLED: "true" RABBITMQ_DEFAULT_PORT: "5671" # APPLICATION__SECURITY__TRUSTEDCERTIFICATELOCATION: "/etc/ssl/certs" 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.