Установка ТестОпс версии 5.x в Kubernetes
Внимание
В разделе описывается, как установить и запустить ТестОпс версии 5.х в кластере Kubernetes с помощью нашего официального Helm-чарта.
Инструкция для версии 4.x перенесена в архив. Чтобы установить и запустить ТестОпс, пожалуйста, используйте только актуальную инструкцию.
Кластер Kubernetes — рекомендуемый способ запуска ТестОпс в производственной среде с высокой нагрузкой. Он позволяет масштабировать решение при возрастающей нагрузке и обновлять систему без ее остановки.
Миграция с ТестОпс версии 4.x
Внимание
ТестОпс версии 5.х нельзя развернуть поверх версии 4.х. Для обновления необходима миграция данных в одну базу данных, а также переход на новый Helm-чарт.
Перейти на ТестОпс версии 5.х можно только с версии 4.26.5. Обновление с более старых версий приведет к сбоям в системе и потере данных.
Чтобы обновить ТестОпс версии 4.26.5 до версии 5.x, пожалуйста, обратитесь к руководству по миграции.
Совет
Перед объединением баз данных мы настоятельно рекомендуем перенести их на отдельный сервер и выполнить все миграции на этом сервере, если ваши базы данных расположены в подах с PVC (Persistent Volume Claim). В будущем такой вариант сэкономит вам время при миграциях и обновлениях.
Также рекомендуем создать резервные копии всех баз данных перед их объединением.
Подготовительные шаги для установки ТестОпс версии 5.x «с нуля»
Установите
kubectl
(руководство по установке на сайте Kubernetes).Установите Helm (руководство по установке на сайте Helm).
Разверните дополнительные сервисы, необходимые для запуска ТестОпс:
- сервер PostgreSQL версии 15 или выше (см. инструкцию по созданию базы данных);
- хранилище, совместимое с S3, такое как Amazon S3, Google Cloud Storage, MinIO или другое решение;
- службу очереди сообщений RabbitMQ;
- службу Redis.
Примечание
Установка без выделенных внешних сервисов тоже возможна (например, в демоверсии ТестОпс), однако такой вариант предназначен только для оценочных целей и официально не поддерживается. Обслуживание и обновление подобной конфигурации могут привести к значительному времени простоя или потере данных. Мы не сможем помочь в решении проблем и восстановлении сервиса.
Получите лицензию для ТестОпс:
- Пробную лицензию можно получить, заполнив форму запроса на нашем сайте.
- Коммерческую лицензию можно приобрести через отдел продаж.
Получите подробную информацию о настройке аутентификации внутри вашей организации.
Данные, необходимые для настройки, зависят от того, какой подход к аутентификации пользователя вы выберете. Возможные варианты:
Стандартная аутентификация с помощью имени пользователя и пароля, реализованная в ТестОпс.
Этот вариант использует SMTP-сервер для отправки приглашений новым пользователям и не требует использования дополнительных сервисов.
Аутентификация через внешнего провайдера идентификационных данных (IdP).
Детали, необходимые для этого, могут отличаться в зависимости от типа используемого провайдера идентификационных данных. Подробная информация о настройках находится в соответствующих разделах документации.
Загрузка и изменение файла конфигурации
Определите номер самой последней (актуальной) версии Helm-чарта по ссылке.
Загрузите архив в формате TGZ для актуального релиза Helm-чарта на компьютер, где вы планируете выполнять подготовку конфигурационного файла:
При работе на Unix-подобной системе используйте команду
wget
для загрузки архива:shellwget https://dl.qatools.ru/repository/helm-charts/testops-<latest-release-number>.tgz
где вместо
<latest-release-number>
укажите номер актуальной версии Helm-чарта, например,5.10.2
.В других случаях откройте эту страницу и скачайте архив вручную.
Извлеките файл values.yaml из загруженного архива вручную или с помощью команды:
shelltar -xzvf testops-<latest-release-number>.tgz testops/values.yaml
где вместо
<latest-release-number>
укажите номер версии загруженного архива. Файл будет извлечен в директорию testops.Откройте файл values.yaml в текстовом редакторе.
Файл определяет параметры, которые будут влиять на поведение вашей инстанции ТестОпс. Для типичной настройки выполните следующие действия:
Выбор версии ТестОпс
В параметре version
укажите версию ТестОпс, которую вы хотите использовать, например:
yaml
version: 5.10.3
Примечание
Версии приложения и Helm-чарта не всегда совпадают. От Helm-чарта зависит минимально поддерживаемая версия приложения. Например, последнюю версию Helm-чарта 5.7.0 можно использовать с ТестОпс 5.7.0 и более поздними версиями приложения. Однако с выходом новой версии Helm-чарта, например 5.8.1, уже будет нельзя использовать версию Helm-чарта 5.7.0 с версиями ТестОпс 5.8.1 и выше.
Шаги по установке актуальны для любой версии, начиная с ТестОпс 5.4.0. Мы рекомендуем использовать только последнюю доступную версию, так как она содержит новые возможности и улучшения в ТестОпс, а также исправления ошибок. Чтобы получить список доступных версий, ознакомьтесь с разделом Информация о релизах.
Реестр образов и репозиторий
Чтобы загрузить образ TecтОпс, в разделе image
укажите реестр образов и репозиторий, из которого будет загружен образ:
yaml
image:
registry: reg.qatools.ru
repository: testops
imageName: testops
pullPolicy: IfNotPresent
authRequired:
enabled: true
username: имя пользователя, полученное через отдел продаж
password: пароль, полученный через отдел продаж
credsKubeSecretName: qatools-reg-pull-secret
Настройка URL-адреса ТестОпс
Укажите URL-адрес установки, определив три параметра:
instanceFqdn
— имя хоста, которое пользователи и интеграции, например CI-серверы, будут использовать для доступа к ТестОпс;port
— порт, который пользователи будут использовать для доступа к ТестОпс;network.tls.enabled
— при значенииtrue
контроллер Ingress в Kubernetes будет использовать протокол HTTPS вместо HTTP.
В приведенном ниже примере инстанс ТестОпс доступен по адресу “http://testops.example.com/” (используется порт 80 — стандартный порт для HTTP).
yaml
instanceFqdn: testops.example.com
port: 8080
# ...
network:
tls:
enabled: false
# ...
# ...
# ...
Подробнее см. в разделе Сеть.
Настройка балансировщика нагрузки
Существует множество способов управления входящим и исходящим трафиком в кластере Kubernetes. Выбор лучшего варианта зависит от ваших конкретных потребностей. ТестОпс предлагает два решения для распространенных случаев использования:
- Чтобы использовать сервис Ingress, установите параметру
network.ingress.enabled
значениеtrue
. - Чтобы использовать сервис Istio, установите параметру
network.istio.enabled
значениеtrue
.
Настройка параметров безопасности
Ключ шифрования
В качестве меры безопасности ТестОпс шифрует важные значения в базе данных с помощью алгоритма AES-256. Таким образом, если злоумышленник получит доступ к базе данных PostgreSQL, но не к файлу конфигурации, он не получит учетные данные сторонних сервисов, используемых вашим инстансом.
Чтобы установить ключ шифрования, придумайте парольную фразу, закодируйте ее в формате Base64 и укажите в качестве значения параметра cryptoPass
. Мы рекомендуем сохранить парольную фразу в безопасном месте, чтобы ее можно было восстановить при необходимости.
yaml
cryptoPass: TW9sZWhpbGxRdWl2ZXJMYXR0ZXJTdHVyZGlseQ==
Важно
Если вы забудете значение параметра cryptoPass
или измените его после начального развертывания, все текущие интеграции перестанут работать. В таком случае вам нужно будет зайти в настройки каждого проекта и заново ввести учетные данные для каждой интеграции.
Секретный ключ JWT
ТестОпс использует открытый стандарт JSON Web Token для аутентификации запросов. В рамках этого стандарта вам нужно создать секретный ключ, который будет использоваться для подписи токенов.
Чтобы установить ключ, укажите его в качестве значения параметра jwtSecret
в формате Base64. Рекомендованная длина ключа (до кодирования в Base64) — от 8 до 16 символов. Чем длиннее ключ, тем больше ресурсов ЦПУ понадобится для вычисления подписи.
Вы можете изменить секретный ключ в любое время, это не повлияет на работу пользователей.
yaml
jwtSecret: MTIzNDU2Nzg5QUJDREVG
Настройка почты для первого администратора
ТестОпс использует учетные данные SMTP для отправки пригласительного письма первому администратору независимо от выбранного основного метода аутентификации.
Важно
Начиная с версии 5.4.0, эти настройки обязательны при развертывании нового инстанса ТестОпс. Начиная с версии 5.6.0, первый запуск ТестОпс невозможен без использования настроенного SMTP-сервера.
Чтобы настроить SMTP:
В параметре
email
укажите адрес электронной почты первого администратора.Пример:
yamlemail: [email protected]
Важно
Если вы планируете пользоваться внешним провайдером идентификационных данных, первый администратор может не принимать приглашение по электронной почте. Учетные данные администратора уже будут управляться на стороне провайдера.
Однако вам все равно необходимо настроить SMTP в качестве резервного варианта. Без SMTP, если вы потеряете доступ к внешнему провайдеру идентификационных данных, войти в инстанс будет невозможно, так как локальный администратор будет недоступен.
Укажите учетные данные SMTP согласно инструкции.
Настройка аутентификации
Необходимый шаг при развертывании ТестОпс - настройка того, как пользователи (кроме первого администратора) будут регистрироваться и входить в систему.
Ниже приведены примеры конфигурации для различных поставщиков идентификационных данных.
yaml
auth:
primary: system
defaultRole: ROLE_GUEST
Совет
Установка defaultRole: ROLE_GUEST
полезна для контроля того, как используются лицензии, — пользователям с ролью ROLE_GUEST
не нужны лицензии, также они не имеют доступа к проектам.
Настройка сервисов хранения данных
Чтобы подключиться к сервисам хранения данных, которые используются в ТестОпс, определите параметры для:
подключения к серверу Redis:
redis.host
— имя хоста сервера;redis.port
— порт сервера;redis.auth.password
— пароль для подключения к хранилищу.
подключения к базе данных PostgreSQL:
postgresql.enabled
— при значенииtrue
Kubernetes создаст новую базу данных внутри кластера вместо использования параметров подключения. Не рекомендуется для производственной среды;datasources.mainDatasource.dbHost
— имя хоста сервера базы данных;datasources.mainDatasource.dbPort
— порт сервера базы данных;datasources.mainDatasource.dbName
— имя базы данных;datasources.mainDatasource.username
— имя пользователя для подключения к базе данных;datasources.mainDatasource.password
— пароль для подключения к базе данных.
См. раздел Разделение пулов соединений о настройке пулов соединений базы данных для различных типов операций.
подключения к серверу RabbitMQ:
rabbitmq.enabled
— при значенииtrue
Kubernetes создаст новый сервер RabbitMQ внутри кластера вместо использования параметров подключения. Не рекомендуется для производственной среды;rabbitmq.hosts
— список местоположений серверов, разделенных запятыми, в формате AMQP;rabbitmq.auth.username
— имя пользователя для подключения к очереди сообщений;rabbitmq.auth.password
— пароль для подключения к очереди сообщений.
подключения к серверу хранения данных, совместимому с S3:
minio.enabled
— при значенииtrue
Kubernetes создаст новый сервер S3 внутри кластера вместо использования параметров подключения. Не рекомендуется для производственной среды;storage.s3.endpoint
— URL-адрес сервера;storage.s3.bucket
— имя бакета S3;storage.s3.region
— имя региона S3;storage.s3.accessKey
— ключ доступа для подключения к бакету;storage.s3.secretKey
— секретный ключ для подключения к бакету.
Информацию о том, как настроить доступ к внешним S3-хранилищам, таким как Amazon S3 и Google Cloud Storage, см. в этой статье.
Некоторые дополнительные параметры могут быть изменены для тонкой настройки производительности или поддержки нестандартных конфигураций сервисов хранения. Проверьте комментарии в файле values.yaml и при необходимости проконсультируйтесь со службой поддержки ТестОпс.
Развертывание ТестОпс
Установка чарта
После подготовки файла values.yaml вы можете установить Helm-чарт и запустить ТестОпс.
Откройте терминал.
Подключите Kubernetes к репозиторию Helm:
shhelm repo add qatools https://dl.qatools.ru/repository/helm-charts --username <username> --password <password>
где
username
иpassword
— учетные данные, предоставленные отделом продаж.Обновите данные репозитория:
shhelm repo update
Перейдите в директорию, содержащую файл values.yaml, например:
shcd ~/testops
Развертывание приложения
Разверните ТестОпс с помощью Helm-чарта и сконфигурированного файла values.yaml:
shhelm upgrade --install testops qatools/testops \ -f values.yaml \ --set probes.enabled=false \ --namespace testops \ --create-namespace
На этом этапе вам нужно дождаться завершения двух длительных операций:
- Перед запуском каких-либо сервисов Kubernetes должен загрузить необходимые образы из реестра.
- Во время запуска сервис ТестОпс должен инициализировать свою базу данных.
При первом запуске ТестОпс применяет изменения к схеме базы данных. Ее инициализация может занять больше времени, чем указано в таймауте сервиса. Чтобы Kubernetes не останавливал сервисы из-за таймаутов, в команде выше используется аргумент
--set probes.enabled=false
, который отключает проверки готовности и жизнеспособности сервисов. Аргумент используется при каждом обновлении ТестОпс, если в информации о релизах указано, что для релиза необходима миграция данных внутри базы данных.Дождитесь готовности развертывания testops-testops.
Используйте
kubectl get all
, чтобы просмотреть статус развертываний и подов. Когда каждый под примет статусRunning
, инициализация ТестОпс будет завершена.После завершения инициализации включите проверки готовности и жизнеспособности сервисов, которые были отключены во время установки. Для этого выполните обновление чарта без аргумента
--set probes.enabled=false
:shhelm upgrade testops qatools/testops -f values.yaml --namespace testops
Первый запуск
При первом запуске ТестОпс необходимо ввести лицензионный ключ. Для этого выполните действия:
Запустите ТестОпс.
После запуска ТестОпс вам придет письмо с приглашением на адрес, который вы указали в
email
. В полученном письме нажмите Принять приглашение.Примечание
Если в браузере появляется ошибка «Невозможно подключиться» (“Unable to connect”) или «Сайт недоступен» (“This site can't be reached”), это может означать, что некоторые сервисы все еще инициализируются.
Если через 5 минут браузер все еще не сможет открыть страницу, обратитесь к разделу Устранение неполадок.
В форме принятия приглашения введите полное имя администратора и учетные данные, которые будут использоваться для входа в систему: Имя пользователя и Пароль. Имя пользователя должно быть уникальным в пределах инстанса ТестОпс.
Нажмите Продолжить.
В форме активации введите лицензионный ключ, который вы получили от отдела продаж. Убедитесь, что вы указываете ключ без лишних пробелов и других символов.
Нажмите Активировать лицензию.
Обновление
Важно
Перед началом обязательно ознакомьтесь с информацией о релизах для версии ТестОпс, на которую вы обновляетесь. В комментариях к релизу может содержаться важная информация о том, как адаптировать конфигурационные файлы или мигрировать данные на новую версию ТестОпс. Если вы пропускаете одну или несколько версий, также прочитайте комментарии к пропущенным версиям.
Откройте терминал.
Обновите данные репозитория:
shhelm repo update
Перейдите в директорию, содержащую файл values.yaml, например:
shcd ~/testops
Выполните обновление:
shhelm upgrade testops qatools/testops -f values.yaml --namespace testops --set probes.enabled=false
На этом этапе вам нужно дождаться завершения двух длительных операций:
- Перед запуском каких-либо сервисов Kubernetes должен загрузить необходимые образы из реестра.
- Во время запуска сервису ТестОпс потребуется повторно инициализировать свою базу данных.
Аргумент
-set probes.enabled=false
, используемый в команде, отключает проверки готовности и жизнеспособности сервисов. Это позволяет Kubernetes не останавливать сервисы из-за таймаутов. Аргумент можно не использовать, если в информации о релизах не указано, что для релиза необходима миграция данных внутри базы данных.Дождитесь готовности развертывания testops-testops.
Используйте
kubectl get all
, чтобы просмотреть статус развертываний и подов. Когда каждый под примет статусRunning
, инициализация ТестОпс будет завершена.После завершения повторной инициализации включите проверки готовности и жизнеспособности сервисов, которые были отключены во время установки. Для этого снова выполните обновление чарта, но уже без аргумента
-set probes.enabled=false
:shhelm upgrade testops qatools/testops -f values.yaml --namespace testops
Удаление
Чтобы удалить инстанс ТестОпс, выполните команду:
shell
helm delete testops --namespace testops && kubectl delete namespace testops
Устранение неполадок
Если вы столкнулись с проблемой, не перезапускайте ТестОпс. Специалистам технической поддержки нужны логи каждого компонента, чтобы понять, что произошло.
Обратитесь в службу поддержки ТестОпс с вашей корпоративной электронной почты — нажмите Создать обращение и заполните форму:
- Подробно опишите проблему, с которой вы столкнулись.
- Укажите способ установки и версию ТестОпс, а также всех дополнительных компонентов, с которыми у вас возникли проблемы (allurectl, интеграционные плагины и т. д.).
- Приложите логи из вашей системы в качестве вложений к обращению (см. подробности ниже). Пожалуйста, добавляйте только логи, описанные ниже, и только в виде вложения.
Чтобы получить нужную информацию для отладки, выполните следующий набор команд:
Получение списка всех установленных компонентов
bash
kubectl get all --namespace testops
Сохранение логов
bash
kubectl logs --namespace testops deployments/testops-testops > testops-log.txt
Непрерывный вывод логов
bash
kubectl logs --namespace testops -f deployments/testops-testops