Перейти к основному содержимому

Установка ТестОпс версии 5.x в Kubernetes

Внимание

В разделе описывается, как установить и запустить ТестОпс версии 5.х в кластере Kubernetes с помощью нашего официального Helm-чарта.

Инструкция для версии 4.x перенесена в архив. Чтобы установить и запустить ТестОпс, пожалуйста, используйте только актуальную инструкцию.

Кластер Kubernetes — рекомендуемый способ запуска ТестОпс в производственной среде с высокой нагрузкой. Он позволяет масштабировать решение при возрастающей нагрузке и обновлять систему без ее остановки.

К сведению

Поддержка аутентификации с использованием OpenID доступна, начиная с ТестОпс версии 5.6.0. Для серверного развертывания доступны OpenID, SAML2 и LDAP. Поддержка внешних провайдеров идентификационных данных в SaaS планируется в четвертом квартале 2024 года.

Миграция с ТестОпс версии 4.x

Внимание

ТестОпс версии 5.х нельзя развернуть поверх версии 4.х. Для обновления необходима миграция данных в одну базу данных, а также переход на новый Helm-чарт.

Перейти на ТестОпс версии 5.х можно только с версии 4.26.5. Обновление с более старых версий приведет к сбоям в системе и потере данных.

Чтобы обновить ТестОпс версии 4.26.5 до версии 5.x, пожалуйста, обратитесь к руководству по миграции.

Совет

Перед объединением баз данных мы настоятельно рекомендуем перенести их на отдельный сервер и выполнить все миграции на этом сервере, если ваши базы данных расположены в подах с PVC (Persistent Volume Claim). В будущем такой вариант сэкономит вам время при миграциях и обновлениях.

Также рекомендуем создать резервные копии всех баз данных перед их объединением.

Подготовительные шаги для установки ТестОпс версии 5.x «с нуля»

  1. Установите kubectl (руководство по установке на сайте Kubernetes).

  2. Установите Helm (руководство по установке на сайте Helm).

  3. Разверните дополнительные сервисы, необходимые для запуска ТестОпс:

    Примечание

    Установка без выделенных внешних сервисов тоже возможна (например, в демоверсии ТестОпс), однако такой вариант предназначен только для оценочных целей и официально не поддерживается. Обслуживание и обновление подобной конфигурации могут привести к значительному времени простоя или потере данных. Мы не сможем помочь в решении проблем и восстановлении сервиса.

  4. Получите лицензию для ТестОпс:

  5. Получите подробную информацию о настройке аутентификации внутри вашей организации.

    Данные, необходимые для настройки, зависят от того, какой подход к аутентификации пользователя вы выберете. Возможные варианты:

    • Стандартная аутентификация с помощью имени пользователя и пароля, реализованная в ТестОпс.

      Этот вариант использует SMTP-сервер для отправки приглашений новым пользователям и не требует использования дополнительных сервисов.

    • Аутентификация через внешнего провайдера идентификационных данных (IdP).

      Детали, необходимые для этого, могут отличаться в зависимости от типа используемого провайдера идентификационных данных. Подробная информация о настройках находится в соответствующих разделах документации.

Загрузка и изменение файла конфигурации

  1. Определите номер самой последней (актуальной) версии Helm-чарта по ссылке.

  2. Загрузите архив в формате TGZ для актуального релиза Helm-чарта на компьютер, где вы планируете выполнять подготовку конфигурационного файла:

    • При работе на Unix-подобной системе используйте команду wget для загрузки архива:

      wget https://dl.qatools.ru/repository/helm-charts/testops-<latest-release-number>.tgz

      где вместо <latest-release-number> укажите номер актуальной версии Helm-чарта, например, 5.10.2.

    • В других случаях откройте эту страницу и скачайте архив вручную.

  3. Извлеките файл values.yaml из загруженного архива вручную или с помощью команды:

    tar -xzvf testops-<latest-release-number>.tgz testops/values.yaml

    где вместо <latest-release-number> укажите номер версии загруженного архива. Файл будет извлечен в директорию testops.

  4. Откройте файл values.yaml в текстовом редакторе.

    Файл определяет параметры, которые будут влиять на поведение вашей инстанции ТестОпс. Для типичной настройки выполните следующие действия:

    1. Укажите версию ТестОпс.
    2. Укажите правильную информацию о реестре образов и репозитории.
    3. Настройте URL-адрес ТестОпс.
    4. Настройте балансировщик нагрузки.
    5. Настройте адрес электронной почты первого администратора.
    6. Настройте аутентификацию.
    7. Настройте сервисы хранения данных.

Выбор версии ТестОпс

В параметре version укажите версию ТестОпс, которую вы хотите использовать, например:

version: 5.10.3

Шаги по установке актуальны для любой версии, начиная с ТестОпс 5.4.0. Мы рекомендуем использовать только последнюю доступную версию, так как она содержит новые возможности и улучшения в ТестОпс, а также исправления ошибок. Чтобы получить список доступных версий, ознакомьтесь с разделом Информация о релизах.

Реестр образов и репозиторий

Чтобы загрузить образ TecтОпс, в разделе image укажите реестр образов и репозиторий, из которого будет загружен образ:

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).

instanceFqdn: testops.example.com
port: 8080
# ...
network:
tls:
enabled: false
# ...
# ...
# ...

Настройка балансировщика нагрузки

Существует множество способов управления входящим и исходящим трафиком в кластере Kubernetes. Выбор лучшего варианта зависит от ваших конкретных потребностей. ТестОпс предлагает два решения для распространенных случаев использования:

  • Чтобы использовать сервис Ingress, установите параметру network.ingress.enabled значение true.
  • Чтобы использовать сервис Istio, установите параметру network.istio.enabled значение true.

Настройка почты для первого администратора

Начиная с версии 5.4.0, необходимо настроить учетные данные SMTP во время установки. Начиная с версии 5.6.0, первый запуск ТестОпс невозможен без использования настроенного SMTP-сервера.

ТестОпс будет использовать учетные данные SMTP для отправки пригласительного письма первому администратору независимо от выбранного основного метода аутентификации. Адрес электронной почты администратора должен быть указан в параметре adminEmail.

Ниже приведен пример параметров для учетной записи Gmail. Обратите внимание, что Google требует генерировать специальные пароли приложений для SMTP при включенной двухфакторной аутентификации. Другие почтовые службы, например Яндекс Почта, могут предъявлять аналогичные требования.

adminEmail: [email protected]

# ...

smtp:
enabled: true
host: smtp.gmail.com
port: 587
authEnabled: true
from: [email protected]
username: [email protected]
password: Ohku6Zo9gee5aen0
startTLSEnabled: true
startTLSRequired: true
sslEnabled: true
sslTrust: smtp.gmail.com

Настройка аутентификации

Необходимый шаг при развертывании ТестОпс - настройка того, как пользователи (кроме первого администратора) будут регистрироваться и входить в систему.

Ниже приведены примеры конфигурации для различных поставщиков идентификационных данных.

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 — секретный ключ для подключения к бакету.

Некоторые дополнительные параметры могут быть изменены для тонкой настройки производительности или поддержки нестандартных конфигураций сервисов хранения. Проверьте комментарии в файле values.yaml и при необходимости проконсультируйтесь со службой поддержки ТестОпс.

Развертывание ТестОпс

Установка чарта

После подготовки файла values.yaml вы можете установить Helm-чарт и запустить ТестОпс.

  1. Откройте терминал.

  2. Подключите Kubernetes к репозиторию Helm:

    helm repo add qatools https://dl.qatools.ru/repository/helm-charts --username <username> --password <password>

    где username и password — учетные данные, предоставленные отделом продаж.

  3. Обновите данные репозитория:

    helm repo update
  4. Перейдите в директорию, содержащую файл values.yaml, например:

    cd ~/testops

Развертывание приложения

  1. Разверните ТестОпс с помощью Helm-чарта и сконфигурированного файла values.yaml:

    helm upgrade --install testops qatools/testops \
    -f values.yaml \
    --set probes.enabled=false \
    --namespace testops \
    --create-namespace

    На этом этапе вам нужно дождаться завершения двух длительных операций:

    1. Перед запуском каких-либо сервисов Kubernetes должен загрузить необходимые образы из реестра.
    2. Во время запуска сервис ТестОпс должен инициализировать свою базу данных.

    При первом запуске ТестОпс применяет изменения к схеме базы данных. Ее инициализация может занять больше времени, чем указано в таймауте сервиса. Чтобы Kubernetes не останавливал сервисы из-за таймаутов, в команде выше используется аргумент --set probes.enabled=false, который отключает проверки готовности и жизнеспособности сервисов. Аргумент используется при каждом обновлении ТестОпс, если в информации о релизах указано, что для релиза необходима миграция данных внутри базы данных.

  2. Дождитесь готовности развертывания testops-testops.

    Используйте kubectl get all, чтобы просмотреть статус развертываний и подов. Когда каждый под примет статус Running, инициализация ТестОпс будет завершена.

  3. После завершения инициализации включите проверки готовности и жизнеспособности сервисов, которые были отключены во время установки. Для этого выполните обновление чарта без аргумента --set probes.enabled=false:

    helm upgrade testops qatools/testops -f values.yaml --namespace testops

Первый запуск

При первом запуске ТестОпс необходимо ввести лицензионный ключ. Для этого выполните действия:

  1. Запустите ТестОпс.

  2. После запуска ТестОпс вам придет письмо с приглашением на адрес, который вы указали в adminEmail. В полученном письме нажмите Принять приглашение.

    Примечание

    Если в браузере появляется ошибка «Невозможно подключиться» (“Unable to connect”) или «Сайт недоступен» (“This site can't be reached”), это может означать, что некоторые сервисы все еще инициализируются.

    Если через 5 минут браузер все еще не сможет открыть страницу, обратитесь к разделу Устранение неполадок.

  3. В форме принятия приглашения введите полное имя администратора и учетные данные, которые будут использоваться для входа в систему: Имя пользователя и Пароль. Имя пользователя должно быть уникальным в пределах инстанса ТестОпс.

    Нажмите Продолжить.

  4. В форме активации введите лицензионный ключ, который вы получили от отдела продаж. Убедитесь, что вы указываете ключ без лишних пробелов и других символов.

    Нажмите Активировать лицензию.

Обновление

Важно

Перед началом обязательно ознакомьтесь с информацией о релизах для версии ТестОпс, на которую вы обновляетесь. В комментариях к релизу может содержаться важная информация о том, как адаптировать конфигурационные файлы или мигрировать данные на новую версию ТестОпс. Если вы пропускаете одну или несколько версий, также прочитайте комментарии к пропущенным версиям.

  1. Откройте терминал.

  2. Обновите данные репозитория:

    helm repo update
  3. Перейдите в директорию, содержащую файл values.yaml, например:

    cd ~/testops
  4. Выполните обновление:

    helm upgrade testops qatools/testops -f values.yaml --namespace testops --set probes.enabled=false

    На этом этапе вам нужно дождаться завершения двух длительных операций:

    1. Перед запуском каких-либо сервисов Kubernetes должен загрузить необходимые образы из реестра.
    2. Во время запуска сервису ТестОпс потребуется повторно инициализировать свою базу данных.

    Аргумент -set probes.enabled=false, используемый в команде, отключает проверки готовности и жизнеспособности сервисов. Это позволяет Kubernetes не останавливать сервисы из-за таймаутов. Аргумент можно не использовать, если в информации о релизах не указано, что для релиза необходима миграция данных внутри базы данных.

  5. Дождитесь готовности развертывания testops-testops.

    Используйте kubectl get all, чтобы просмотреть статус развертываний и подов. Когда каждый под примет статус Running, инициализация ТестОпс будет завершена.

  6. После завершения повторной инициализации включите проверки готовности и жизнеспособности сервисов, которые были отключены во время установки. Для этого снова выполните обновление чарта, но уже без аргумента -set probes.enabled=false:

    helm upgrade testops qatools/testops -f values.yaml --namespace testops

Удаление

Чтобы удалить инстанс ТестОпс, выполните команду:

helm delete testops --namespace testops && kubectl delete namespace testops

Устранение неполадок

Если вы столкнулись с проблемой, не перезапускайте ТестОпс. Специалистам технической поддержки нужны логи каждого компонента, чтобы понять, что произошло.

Обратитесь в службу поддержки ТестОпс с вашей корпоративной электронной почты — нажмите Создать обращение и заполните форму:

  1. Подробно опишите проблему, с которой вы столкнулись.
  2. Укажите способ установки и версию ТестОпс, а также всех дополнительных компонентов, с которыми у вас возникли проблемы (allurectl, интеграционные плагины и т. д.).
  3. Приложите логи из вашей системы в качестве вложений к обращению (см. подробности ниже). Пожалуйста, добавляйте только логи, описанные ниже, и только в виде вложения.

Чтобы получить нужную информацию для отладки, выполните следующий набор команд:

Получение списка всех установленных компонентов

kubectl get all --namespace testops

Сохранение логов

kubectl logs --namespace testops deployments/testops-testops > testops-log.txt

Непрерывный вывод логов

kubectl logs --namespace testops -f deployments/testops-testops