Статья описывает состав инсталляции ТестОпс (серверная версия 5.x), требования к зависимостям и сетевые взаимодействия.
Состав инсталляции
Приложение ТестОпс — единый сервис (один контейнер/процесс, отдающий и веб-интерфейс, и REST API). Инсталляция целиком состоит из приложения и четырех зависимостей:
| Компонент | Назначение | Данные | Резервное копирование |
| Приложение ТестОпс | UI, API, обработка результатов | Stateless, масштабируется репликами (все реплики — одна сборка) | Не требуется |
| PostgreSQL | Основная база данных | Критичные — все сущности продукта | Рекомендуется |
| S3-совместимое хранилище | Артефакты (вложения, скриншоты, логи) | Критичные | Рекомендуется |
| RabbitMQ или Artemis | Очереди задач (обработка загрузок, чистки, экспорт) | Временные: задачи в обработке; при штатной работе очереди пусты | Не требуется. Персистентность — по желанию: с ней задачи, находившиеся в обработке, переживают рестарт брокера; без нее при рестарте они будут потеряны (результаты, загружавшиеся в этот момент, потребуется загрузить повторно). База данных и хранилище артефактов в любом случае не затрагиваются |
| Redis или Valkey | Сессии пользователей, кэши | Одноразовые: потеря = перелогин пользователей и прогрев кэшей | Не требуется, персистентность не нужна |
Требования и вариации по компонентам
PostgreSQL. Версия 15 и выше. Обзор роли базы данных в инсталляции — в документации: Архитектура → База данных. Параметры PostgreSQL, необходимые для корректной работы приложения ТестОпс, — в разделе База данных → Параметры PostgreSQL. Поддерживаются отказоустойчивые конфигурации (в том числе Patroni; для Kubernetes — helm chart 5.24.10+).
Redis или Valkey. Valkey (форк Redis под Linux Foundation) совместим по протоколу и поддерживается наравне с Redis. Два режима подключения:
- Standalone — один инстанс, достаточно для большинства инсталляций;
- Sentinel — отказоустойчивый режим (минимум 3 ноды Sentinel на независимых хостах).
Персистентность не требуется. Соединение приложения с Redis/Valkey может быть зашифровано TLS (включается настройкой ТестОпс, серверная часть — на стороне Redis/Valkey). Redis Cluster не поддерживается
Брокер сообщений. Два поддерживаемых варианта:
- RabbitMQ (AMQP, порт 5672; с TLS — 5671). Три режима очередей: non-durable (по умолчанию), durable (классические устойчивые очереди), quorum (кворумные очереди для кластерной установки). Смена режима на работающей инсталляции требует пересоздания очередей — иначе ошибка PRECONDITION_FAILED.
- Apache Artemis — альтернатива RabbitMQ, подключение нативным протоколом CORE (tcp://host:61616).
Брокер хранит только задачи в полете и dead-letter-очереди; первичных данных в нем нет.
S3-хранилище. Любое S3-совместимое решение. Два режима работы приложения (storage.type в values чарта):
- S3 — базовый, максимальная совместимость;
- S3_ASYNC — расширенный (AWS SDK v2): пакетное удаление объектов (DeleteObjects), server-side copy и move — заметно ускоряет массовые чистки и удаление запусков. Рекомендуется, если хранилище поддерживает эти операции.
Включение расширенного режима в values helm-чарта (advancedS3SDK работает только при type: S3_ASYNC, при типе S3 игнорируется):
storage:
type: "S3_ASYNC"
s3:
advancedS3SDK:
enabled: true
bulkRemoveSupported: true
moveSupported: true
copySupported: true
Флаги гранулярные: если хранилище не поддерживает одну из операций, отключается только она, остальные продолжают работать.
Поддержка массовых операций хранилищами: AWS S3 и MinIO поддерживают все три операции; Ceph RGW поддерживает пакетное удаление и server-side copy. Для других решений (в том числе отечественных — YADRO TATLIN.OBJECT, RAIDIX iSAN) поддержку DeleteObjects и server-side copy/move необходимо подтвердить у вендора до включения соответствующих флагов. Проверка проста: включить S3_ASYNC на тестовом стенде и выполнить массовое удаление запусков.
Требования: только SSD, стандартный класс хранения, версионирование объектов отключить, выделенный инстанс, не на одном диске с базой данных. Поддерживаются path-style и virtual-host адресация (ключ storage.s3.pathstyle), а также SSE-шифрование.
Варианты развертывания. Kubernetes с helm-чартом (версия Kubernetes 1.20 и выше) — наиболее рекомендуемый вариант для производственной среды; docker-compose - требования: Docker Engine и плагин Docker Compose V2; установка RPM/DEB-пакетами — для развертывания без контейнеров.
Образы предоставляются через реестр qatools по логину/паролю предоставленному отделом продаж.
Матрица сетевых потоков
| № | Откуда | Куда | Порт (дефолт) | Варианты | Назначение |
| 1 | Браузеры пользователей | Вход (ingress/балансировщик) → приложение | 443/HTTPS | 80/HTTP (см. примечание 2) | UI + REST API |
| 2 | CI-агенты (allurectl, плагины CI) | Тот же вход, что и №1 | 443/HTTPS | 80/HTTP | Загрузка результатов |
| 3 | Приложение | PostgreSQL | 5432/TCP | Нестандартный порт; при Patroni — VIP/haproxy | База данных |
| 4 | Приложение | RabbitMQ или Artemis | 5672/AMQP | 5671/AMQPS (TLS); Artemis — 61616/CORE | Очереди задач |
| 5 | Приложение | Redis или Valkey | 6379/TCP | TLS; при Sentinel — дополнительно 26379 на все ноды Sentinel | Сессии, кэши |
| 6 | Приложение | S3-хранилище | 443/HTTPS | 9000/HTTP (MinIO-стиль), 80/HTTP | Артефакты |
| 7 | Приложение | LDAP / Active Directory | 389/LDAP | 636/LDAPS | Аутентификация (если включена) |
| 8 | Приложение | SSO IdP (SAML/OIDC) | 443/HTTPS | — | Аутентификация (если включена); IdP также редиректит браузер на вход №1 |
| 9 | Приложение | SMTP | 25 / 465 / 587 | — | Служебные письма: приглашения и подтверждение локальных учетных записей, сброс паролей (при входе через SSO/IdP не используются), уведомление об отключении TMS-синхронизации |
| 10 | Приложение | Внешние трекеры/TMS (Jira и др.) | 443/HTTPS | 80/HTTP | Интеграции (если включены) |
| 11 | Браузер пользователя Jira | Вход №1 | 443/HTTPS | 80/HTTP — если Jira и ТестОпс на одном домене; при разных доменах только HTTPS (браузерная политика SameSite для куки в iframe) | Iframe-панели Jira-плагина (если установлен) |
Примечания
1. Направление соединений. Потоки 3–10 — исходящие от приложения; входящих соединений из систем организации к инсталляции нет, кроме входа №1/№2. Строки 7–10 опциональны: при выключенных интеграциях эти соединения отсутствуют. Инсталляция полностью работоспособна в закрытом контуре без доступа в интернет.
2. Работа по HTTP. Поддерживается (настройка allure.secure=false, значение по умолчанию). Ограничения: SSO-провайдер может требовать HTTPS для redirect URI; iframe-панели Jira-плагина при размещении Jira и ТестОпс на разных доменах требуют HTTPS (ограничение браузерной политики SameSite); часть браузерных функций (например, копирование в буфер обмена) недоступна вне защищенного контекста. При включении allure.secure=true без HTTPS вход в систему работать не будет. Рекомендуется HTTPS с сертификатом корпоративного центра сертификации.
3. Масштабирование. Лучшая практика — горизонтальное масштабирование: например, 4 реплики приложения ТестОпс по 4 CPU / 8 ГБ RAM предпочтительнее 2 реплик по 16 CPU / 64 ГБ RAM.