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

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

Внимание

В разделе описана установка ТестОпс версии 4.x. Чтобы установить ТестОпс версии 5.x, воспользуйтесь инструкцией.

Kubernetes - это лучший и рекомендуемый способ развертывания вашего экземпляра ТестОпс в производственной среде.

Единственно официально поддерживаемый вариант развертывания ТестОпс в Kubernetes - это развертывание с использованием нашего официального Helm чарта.

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

Переход на ТестОпс с установки Allure TestOps

Если вы переходите на ТестОпс с существующего инстанса Allure TestOps, то воспользуйтесь вот этой инструкцией для изменения файлов конфигурации.

Предварительные условия

  1. Вам необходимо иметь развернутый и настроенный кластер Kubernetes.
  2. У Вас должен установлен Helm.
  3. Учетные данные (логин, пароль) для скачивания образов ТестОпс предоставляются службой продаж при предоставлении ознакомительной или коммерческой лицензии. Учетные данные могут быть использованы для установки как пакетами, так и с помощью docker compose или Kubernetes. Особенности каждого вида установки описаны в соответствующих разделах документации.
  4. Чтобы начать работу с ТестОпс, Вам необходимо иметь пробную или коммерческую лицензию.

Требования к ресурсам

Чтобы быть уверенным, что развернутая система способна работать в условиях производственной нагрузки, мы рекомендуем использовать следующие ресурсы, необходимые для сервисов ТестОпс:

Gateway

При развертывании в производственной среде сервис Gateway требует выделения следующих ресурсов:

Memory requests/limits: 512Mi CPU requests/limits: 1 CPU

Тем не менее, окончательные настройки ресурсов подлежат корректировке, основанной на профиле нагрузки. Мы рекомендуем использовать описанные выше ресурсы по умолчанию и никогда не опускаться ниже указанных limits.

UAA

При развертывании в производственной среде сервис UAA требует выделения следующих ресурсов:

Memory requests/limits: 1Gi CPU requests/limits: 1 CPU

Тем не менее, окончательные настройки ресурсов подлежат корректировке, основанной на профиле нагрузки. Мы рекомендуем использовать описанные выше ресурсы по умолчанию и никогда не опускаться ниже указанных limits.

Report

При развертывании в производственной среде сервис report требует выделения следующих ресурсов:

Memory requests: 3Gi Memory limits: 4Gi CPU requests: 1 CPU CPU limits: 4 CPU

Тем не менее, окончательные настройки ресурсов подлежат корректировке, основанной на профиле нагрузки. Мы рекомендуем использовать описанные выше ресурсы по умолчанию и никогда не опускаться ниже указанных limits.

Сервис report отвечает за обработку результатов тестов и при увеличении нагрузки на решение может понадобиться масштабирование сервиса report.

Конфигурация

Конфигурация развертывания с помощью нашего Helm-чарта выполняется в файле values.yaml, который должен содержать параметры, специфичные для Вашей установки.

При работе с развертыванием с помощью нашего Helm чарта, пожалуйста, учитывайте следующее:

  1. Вам не требуется загружать весь чарт.
  2. Вы не должны изменять файлы чарта, эта часть находится под управлением только ООО "Инструменты Тестирования".
  3. Вам необходимо создать свою конфигурацию на базе values.yaml, который находится в архиве.
    • для скачивания архива вам понадобятся имя пользователя и пароль (те же, что и для скачивания образов), которые будут вам предоставлены при получении ознакомительной или коммерческой лицензии.
  4. Helm прочитает ваши настройки из values.yaml и применит их к чарту перед развертыванием ТестОпс.

Подготовьте файл конфигурации

Пожалуйста, возьмите за основу для развертывания файл шаблона, подготовленный нашей командой DevOps, который находится в архиве.

  • Этот файл содержит все параметры, необходимые для настройки развертывания.
  • Этот файл содержит комментарии к настройкам, которые могут потребоваться конечному пользователю для изменения.

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

Сведения о реестре образов

Найдите раздел registry шаблона values.yaml

Выставьте данные реестра как указано ниже с учетом информации, которую вы получили от отдела продаж.

registry:
enabled: true
repo: reg.qatools.ru
name: allure-testops
imagePullSecret: qatools-secret # это просто название секрета
pullPolicy: IfNotPresent
auth:
username: уникальное имя пользователя для reg.qatools.ru полученное через отдел продаж
password: пароль для reg.qatools.ru полученный через отдел продаж

версия

Пример

version: 4.22.0

Значение: Это версия ПО ТестОпс, которую вы будете устанавливать в вашем окружении.

Рекомендация: Обновите версию ТестОпс до последней рекомендованной. Не устанавливайте другие релизы, кроме случаев, когда это прямо рекомендовано нашей службой поддержки.

Учетные данные администратора

Пример:

username: admin
password: admin

Значение: имя пользователя admin, пароль пользователя admin

ТестОпс имеет учетную запись admin, которую необходимо создать и сохранить в системе.

Имя этого пользователя (по умолчанию admin) и пароль определены в конфигурационном файле, и он будет восстановлен до состояния, описанного в конфигурационном файле, чтобы вы не потеряли доступ к вашему инстансу ТестОпс, несмотря ни на что. Вы не можете отключить этого пользователя в пользовательском интерфейсе, вы не можете удалить его роль или изменить пароль через пользовательский интерфейс. Во время следующего запуска ТестОпс, он снова создаст пользователя admin со всеми доступными правами и с паролем, определенным в конфигурационном файле.

Если вы опустите предоставление начального пароля администратора, то будет создан пользователь по умолчанию admin и сильный пароль администратора будет сгенерирован системой, а затем сгенерированный пароль будет отправлен в журналы сервиса uaa.

Каждый раз, когда ТестОпс перезапускается, учетная запись пользователя admin восстанавливается в исходное состояние.

Рекомендация: Измените пароль админа в конфигурации перед развертыванием.

host

Пример:

host: alure.host.name

Значение: FQDN экземпляра ТестОпс, который будет использоваться конечными пользователями для доступа к пользовательскому интерфейсу.

Рекомендации: Должно быть обновлено.

Остальные параметры

Мы постарались и максимально подробно описали все параметры values.yaml внутри самого шаблона файла, чтобы вам было понятнее, какие параметры необходимо менять и для чего. Если у вас возникнут вопросы или замечания по правильному наполнению файла, то напишите нам через наш хелп-деск и мы постараемся вам помочь.

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

Перед первым запуском ТестОпс отключите проверку сервисов со стороны kubernetes

Установите для сервисов report, uaa, gateway

probes:
enabled: false

Это небходимо так как ТестОпс при первом запуске выполняет инициализацию БД и последовательные изменения схемы БД для соответствия версии ПО, которую вы указали. Если оставить probes.enabled = true, Kubernetes может перезапустить сервисы и процесс инициализации будет прерван и приложение не сможет запуститься.

Таким же образом следует поступать если в информации о релизе указано, что переход к предыдущему релизу будет невозможен (будут применены изменения в схеме БД и происходить миграция, которая может занять много времени и прерваться при включенном probes).

Запуск ТестОпс

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

Добавление Helm чарта ТестОпс

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

где username и password — это учетные данные для скачивания образов, предоставленные нашей командой продаж.

Обновление данных Helm репозиториев

helm repo update

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

helm upgrade --install allure-testops testops/allure-testops -f values.yaml

Доступ к веб-интерфейсу ТестОпс

Самый первый запуск системы может занять некоторое время, пожалуйста, подождите до 6-7 минут, прежде чем получить доступ к веб-интерфейсу.

Предварительные условия: ingress

Чтобы получить доступ к веб-интерфейсу, необходимо развернуть ingress контроллер, например nginx или istio.

Доступ к пользовательскому интерфейсу ТестОпс

ТестОпс будет доступен по URL, определенному в параметре host вашего файла values.yaml, например, чтобы экземпляр был доступен по адресу <http: allure.local=""> ваш файл values должен содержать следующее:</http:>.

## your-domain.tld
## the real DNS name (FQDN) of the TestOps instance
host: alure.local

Первоначальный вход в систему

Если вы создали секрет для начального пароля admin вручную, вы можете использовать его для входа в систему как пользователь admin.

Если вы не указали пароль, Chart автоматически создаст случайный пароль для пользователя admin. Найти его можно в логах сервиса uaa.

Ввод лицензии для вашего инстанса ТестОпс

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

После предоставления правильной лицензии вы сможете начать работу.

Обновление развертывания ТестОпс

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

Например, вы меняете настройки к серверу БД или другим элементам инфраструктуры, с которыми работает ТестОпс.

В приведенном ниже примере изменения, которые необходимо применить, находятся в файле с именем values.yaml.

helm repo update
helm upgrade --install allure-testops testops/allure-testops -f values.yaml

Обновление релиза

Чтобы обновить релиз ТестОпс, вам нужно обновить одну строку в вашем values.yaml.

Если в информации о релизе указано, что переход к предыдущему релизу будет невозможен (будут применены изменения в схеме БД и происходить миграция, которая может занять много времени), то на время обновления потребуется отключить probes.

probes:
enabled: false

В противном случае процесс миграции данных может быть прерван Kubernetes и решение может стать неработоспособным.

version: 4.22.0

И далее будут те же действия, что и при обновлении параметров конфигурации.

helm repo update
helm upgrade --install allure-testops testops/allure-testops -f values.yaml

Решение проблем

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

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

kubectl get all

Сохранение журналов для каждого компонента ТестОпс

kubectl logs -l app=allure-testops-uaa > uaa-log.txt
kubectl logs -l app=allure-testops-report > report-log.txt
kubectl logs -l app=allure-testops-gateway > gateway-log.txt

Непрерывное журналирование

kubectl logs -f -l app=allure-testops-uaa
kubectl logs -f -l app=allure-testops-report
kubectl logs -f -l app=allure-testops-gateway

Удаление деплоя ТестОпс

Чтобы удалить ТестОпс используя чарт, требуется выполнить

helm delete allure-testops

Изменение конфигурации

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

  • Выделенный сервер БД PostgreSQL (вне контейнеров)
  • Сервис RabbitMQ
  • Сервис Redis

Общий принцип работы с Helm чартом

Мы используем Helm чарт для конфигурирования сервисов в k8s. В целом это работает следующим образом:

  1. Есть большой шаблон Helm чарта, содержащий всю информацию для конфигурации приложения для запуска в k8s.
  2. Есть values.yaml, содержащий настройки, специфичные для развертывания в инфраструктуре конечного пользователя.
  3. Во время развертывания Helm берет настройки из values.yaml, указанные конечным пользователем, и применяет их к шаблону, заменяя настройки по умолчанию.
  4. Когда шаблон сервиса обновляется, т.е. в сервис добавляется какой-либо новый параметр, это изменение будет внесено в установку конечного пользователя Helm при обновлении продукта развернутого экземпляра.

Эффект и ограничения

  1. Программное обеспечение ТестОпс управляется Helm чартом для развертывания ТестОпс, и конечным пользователям рекомендуется использовать стандартную диаграмму Helm.
  2. Если конечный пользователь предпочитает другой способ развертывания ТестОпс, это означает, что конечный пользователь способен настроить такую установку, имея достаточно знаний и опыта.
  3. При использовании альтернативных способов деплоя приложений в Kubernetes конечный пользователь несет ответственность за отслеживание всех изменений в оригинальном Helm чарте и внесение обновлений в свою конфигурацию без участия производителя решения ТестОпс.
  4. В случае если конечный пользователь предпочитает другой способ установки ТестОпс, то поддержка такого решения будет ограничена.

Изменение values.yaml

Файл с пользовательскими настройками, используемый в следующих примерах, называется values.yaml.

Все сервисы, которые используются как внешние, должны быть явно отключены в файле values.yaml (см. пример ниже).

redis:
enabled: false

rabbitmq:
enabled: false

postgresql:
enabled: false

Если вы установили для сервиса в values.yaml значение enabled: false, то вам необходимо указать параметры интеграции для сервиса/приложения в существующей инфраструктуре.

Пример:

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

rabbitmq:
enabled: false # отключает RabbitMQ из чарта и берет данные для соединения из настроек ниже
host: mq.rabbit.internal
auth:
erlangCookie: <takefromdeployedrabbitmq></takefromdeployedrabbitmq>
username: allure
password: allure
resources: {}

ThОстальные сервисы будут иметь такой же подход к интеграции.

Подготовка к развертыванию в производственной среде

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

Для производственной среды обязательными условиями являются:

  • Выделенный сервер БД PostgreSQL
  • Выделенное решение S3, которое не использует ту же файловую систему, что и сервер базы данных
  • Выделенное решение RabbitMQ