Используемые термины: Reportportal , Docker , Linux .
Рассмотрим процесс развертывания портала для выполнения тестов в соответствии с методологией TestOps. Запуск приложения Reportportal будет выполняться в среде Docker. Предполагается, что используется операционная система на базе Linux, но с небольшими изменениями можно выполнить установку на Windows.
Установка Docker
В нашей системе мы должны установить:
- docker engine.
- docker-compose.
В зависимости от типа Linux, действия будут отличаться. Подробнее, процесс установки необходимого программного обеспечения для различных систем описан в инструкции Установка Docker на Linux .
Запуск Reportportal
В гитхабе разработчика представлен готовый docker-compose файл . Его мы можем использовать для развертывания сервиса. Рассмотрим процесс подробнее.
Создаем каталог, в котором разместим файлы приложения:
mkdir /opt/reportportal
Перейдем в него:
cd /opt/reportportal
Скачаем docker-compose файл от разработчика:
curl -s https://raw.githubusercontent.com/reportportal/reportportal/refs/heads/master/docker-compose.yml -o ./docker-compose.yml
Создаем файл с переменными:
vi .env
POSTGRES_USER=rpuser
POSTGRES_PASSWORD=rppass
POSTGRES_DB=reportportal
RABBITMQ_DEFAULT_USER=rabbitmq
RABBITMQ_DEFAULT_PASS=rabbitmq
RP_INITIAL_ADMIN_PASSWORD=erebus
* где:
- POSTGRES_* — данные для подключения к базе данных PostgreSQL. Соответственно, пользователь, пароль, имя базы.
- RABBITMQ_* — логин и пароль для подключения к брокеру rabbitmq.
- RP_INITIAL_ADMIN_PASSWORD — начальный пароль для входа на Reportportal.
Запускаем контейнеры:
docker-compose up -d
Посмотреть их состояние можно командой:
docker-compose ps
Состояние healthcheck у многих контейнеров должно быть starting :
… (health: starting)
Мы должны дождаться полного окончания запуска. Состояние healthcheck должно стать:
(healthy)
После открываем браузер и переходим по адресу http://<IP-адрес сервера>:8080/ — должна открыться стартовая страница Reportportal.
Вводим данные для входа — superadmin / erebus (пароль мы задавали в файле .env).
SSL
Выше было описано, как запустить приложение через http. Внесем некоторые изменения в конфигурацию, чтобы портал работал по https.
Переходим в каталог:
cd /opt/reportportal
Создаем папки:
mkdir -p ./traefik/certs ./traefik/conf
* каталог certs для хранения сертификатов; conf — дополнительных файлов конфигурации.
Создаем конфигурационный файл:
vi ./traefik/conf/certs-traefik.yaml
tls:
stores:
default:
defaultCertificate:
certFile: /etc/certs/cert.crt
keyFile: /etc/certs/cert.key
certificates:
— stores: default
* в данном примере мы указали конфигурацию для TLS.
В каталог traefik/certs копируем файлы сертификатов с именами:
- cert.crt — файл открытого ключа.
- cert.key — закрытый ключ.
Сам сертификат можно купить или получить бесплатно от сертификационного центра Let’s Encrypt .
Отредактируем файл docker-compose:
vi docker-compose.yml
Для сервиса gateway меняем внешний порт на 80 и добавляем порт 443, добавляем файлы сертификатов, которые будут проброшены в контейнер и добавляем опции к команде (изменения указаны желтым):
gateway:
…
ports:
…
— 80 :8080
— 443:443
volumes:
…
— ./traefik/conf/certs-traefik.yaml:/etc/traefik/dynamic/certs-traefik.yaml
— ./traefik/certs:/etc/certs/
command:
…
— —providers.file.directory=/etc/traefik/dynamic
— —entrypoints.websecure.address=:443
— —providers.file.watch=true
* данными настройками мы указали, что контейнер помимо порта http должен слушать на порту https; мы добавили динамический файл конфигурации (в котором указали пути до сертификатов); также мы указали приложению запускаться с дополнительными опциями, благодаря которым будет читаться динамический конфигурационный файл и приложение будет также стартовать с прослушиванием порта https (443).
Для остальных сервисов обязательно, добавляем опцию в разделе labels :
index:
…
labels:
…
— «traefik.http.routers.index.tls=true»
ui:
…
labels:
…
— «traefik.http.routers.ui.tls=true»
api:
…
labels:
…
— «traefik.http.routers.api.tls=true»
uat:
…
labels:
…
— «traefik.http.routers.uat.tls=true»
* данный лейбл говорит сервису, что используется безопасное соединение TLS.
Перезапускаем контейнеры командой:
docker-compose up -d
Смотрим на их состояние:
docker-compose ps
Сначала мы должны увидеть health: starting :
… (health: starting)
Спустя некоторое время данный статус должен поменять на healthy:
(healthy)
Снова открываем браузер и переходим уже по адресу https://<IP-адрес сервера>/ — должна открыться уже известная нам страница Reportportal.