Перейти к основному содержимому
Начало работы
Руководство администратора
How To статьи
Установка и настройка
Компоненты
Руководство пользователя

Установка

Развертывания Bercut ESB производится в 2 основных этапа:

  1. Подготовительный шаг: установка Registry

  2. Установка интеграционной шины (ESB) через Ansible

Плейбук обеспечивает полное развертывание интеграционной шины (ESB) в среде RedOS на основе контейнеров. Все компоненты интегрируются между собой и автоматически регистрируются в общей системе мониторинга.

Подготовительный шаг: установка Registry

Общие сведения

Скрипт pre-install.sh автоматизирует установку и настройку локального Docker Registry на основе Sonatype Nexus 3 с проксирующим Nginx. Он выполняет подготовку окружения, установку зависимостей, загрузку и запуск контейнеров Nexus и Nginx, а также автоматическую настройку Nexus.

Требования

Операционная система: RedOS 7.3.5
Установленные пакеты: Docker, Docker Compose
SSH-доступ к целевому хосту с правами root
Открытые порты: 20443 (Nginx+Nexus+Docker Registry).

Структура проекта

Структура директорий и файлов проекта:

pre-install.sh
roles/init/
─ docker-compose-nexus.yml
─ docker-compose-nginx.yml
─ nexus.conf
─ cert.crt
─ key.key
archives/
─ nexus3_3.79.1.tar.gz
─ nginx_stable-alpine3.19-perl.tar.gz
─ <другие Docker-образы>.tar.gz

Запуск установки

Команда для установки:

chmod +x pre-install.sh
TARGET_HOST=k8s-worker-1.demo.local TARGET_USER=root ./pre-install.sh

Возможно использовать для локальной и удаленной установки.

Примечание.: для облегчения установки лучше предварительно создать ключ.
Команды ssh-keygen и ssh-copy-id.

Этапы установки

  1. Предварительная настройка хоста: правка /etc/nsswitch.conf, добавление IP→FQDN.

  2. Установка зависимостей: Python, Ansible, pip-пакеты, Ansible Collections.

  3. Подготовка Nexus и Nginx: создание директорий, загрузка образов.

  4. Запуск сервисов: docker compose up для Nexus и Nginx.

  5. Настройка Nexus: принятие EULA, включение DockerToken realm, смена пароля.

  6. Создание docker-hosted репозитория и выполнение docker login.

  7. Загрузка локальных образов (*.tar.gz) в Nexus через docker push.

Проверка установки

КомпонентПроверкаОжидаемый результат
Nexus UIHttps://<host>:20443Открывается веб-интерфейс Nexus
Docker logindocker login https://<host>:20443Успешная авторизация
Репозиторийcurl -u admin:admin http://localhost:20443/service/rest/v1/repositoriesЕсть docker-hosted

Результат подготовительных действий

После выполнения pre-install.sh локальный Docker Registry полностью готов к работе. Можно выполнять push/pull образов через:
docker push <host>:20443/<image>:<tag>
docker pull <host>:20443/<image>:<tag>

Дефолтные учетные данные

ПараметрЗначение
Логинadmin
Парольadmin
Nexus URLHttps://<host>:20443

Установка интеграционной шины (ESB) через Ansible

Общие сведения

Плейбук предназначен для автоматизированного развертывания интеграционной шины (Bercut ESB) с использованием Ansible.

Он обеспечивает установку всех необходимых компонентов — от базовой инфраструктуры (PostgreSQL, VictoriaMetrics, Grafana Alloy, Node Exporter) до прикладных сервисов (Core, Backend, Front, Kong, Nginx, Keycloak, License Server, OpenBao и др.).

Требования к окружению

Подготовка inventory и group_vars

Файлы inventory описывают все экземпляры сервисов и их параметры. Пример структуры (inventories/«название кружения»/group_vars/all.yml):

nginx_instances:

  • name: nginx1
    host: test.dev.local

core_instances:

  • name: core1
    host: test.dev.local
    ports_core: 8090

Файл build.descriptor.yml содержит версии и теги Docker-образов всех компонентов, а также адрес приватного реестра (registry).

Этапы выполнения playbook.yml

  1. Формирование динамического inventory — добавление хостов из group_vars в группы Ansible.

  2. Проверка и исправление /etc/nsswitch.conf и /etc/hosts на целевых узлах.

  3. Проверка резолвинга имён из переменных.

  4. Развёртывание инфраструктуры (VictoriaMetrics, Node Exporter, Grafana Alloy).

  5. Установка и настройка PostgreSQL.

  6. Развёртывание Nginx, Kong, Keycloak, License Server, OpenBao.

  7. Установка прикладных сервисов: Conf-Serv, Core, Backend, Front, Datamapper, State Collector.

  8. Генерация DNS-записей (fqdn имен для внесения в DNS) и автоматическая проверка портов всех сервисов.

Переменные build.descriptor.yml

Файл build.descriptor.yml определяет образы и теги для каждого компонента. Пример:

registry: "test.dev.local:20443"
image_name_core: "esb-core"
image_tag_core: "v0.0.1-RC4"
image_name_backend: "esb-backend"
image_tag_backend: "v0.0.1-main-3e3738f"

Пример запуска установки

Полная:
ansible-playbook -i localhost, -e "inventory_dir=inventories/test" playbook.yml -e "bootstrap_mode=true"

Частичная установка:
ansible-playbook -i localhost, -e "inventory_dir=inventories/test" playbook.yml -e "bootstrap_mode=true" -t inventory, core

Для случая с переустановкой openbao нужно сначала удалить контейнер и его директорию (вручную):
ansible-playbook -i localhost, -e "inventory_dir=inventories/test" playbook.yml -e "bootstrap_mode=true" -t inventory,nginx,openbao,confserv

Примечание.: Установка всех компонент шины производится в каталог «/opt».

Проверка развертывания

После успешного выполнения плейбука Ansible появится вывод задачи «TASK [Показать DNS блок в консоли]». В этом блоке перечислены DNS-записи, которые необходимо добавить в DNS или в файл /etc/hosts:

ok: [localhost] => {
"msg": [
"Пожалуйста создайте записи в вашем DNS,",
"укажите ip адрес сервера с nginx для всех записей",
"",
"kong-test.dev.local IN A X.X.X.X",
"kong-gw-test.dev.local IN A X.X.X.X",
"kong-gw-api-test.dev.local IN A X.X.X.X",
"backend-test.dev.local IN A X.X.X.X",
"front-test.dev.local IN A X.X.X.X",
"state-collector-test.dev.local IN A X.X.X.X",
"datamapper-datamapper1-test.dev.local IN A X.X.X.X",
"designer-api-datamapper1-test.dev.local IN A X.X.X.X",
"vite-designer-api-datamapper1-test.dev.local IN A X.X.X.X", "engine-api-url-datamapper1-test.dev.local IN A X.X.X.X", "engine-api-pipeline-datamapper1-test.dev.local IN A X.X.X.X", "keycloak1-test.dev.local IN A X.X.X.X",
"openbao-test.dev.local IN A X.X.X.X",
"grafana-test.dev.local IN A X.X.X.X",
}

После добавления DNS-записей убедитесь, что все сервисы доступны по HTTPS:

СервисПроверка
Kong UIhttps://kong-test.dev.local
Kong Gatewayhttps://kong-gw-test.dev.local
Kong Gateway api (клиентcкий порт)https://kong-gw-api-test.dev.local
Backendhttps://backend-test.dev.local/domains
Fronthttps://front-test.dev.local
Keycloakhttps://keycloak1-test.dev.local
State-collectorhttps://state-collector-test.dev.local/routes/statuses
OpenBaohttps://openbao-test.dev.local
Grafanahttps://grafana-test.dev.local

Возможные ошибки и решения

Ниже представлен список возможных ошибок и варианты их решений.

  • Ошибка резолвинга хоста — проверьте /etc/hosts и убедитесь, что FQDN соответствует IP.

  • Ошибка 'port not reachable' — убедитесь, что сервис запущен и порт не заблокирован firewall.

  • Ошибка при загрузке образов — проверьте доступ к приватному Registry и учетные данные.

  • Ошибка Ansible 'Permission denied' — проверьте доступ по SSH для root или настройте ansible_user.