Установка
Развертывания Bercut ESB производится в 2 основных этапа:
-
Подготовительный шаг: установка Registry
-
Установка интеграционной шины (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.
Этапы установки
-
Предварительная настройка хоста: правка /etc/nsswitch.conf, добавление IP→FQDN.
-
Установка зависимостей: Python, Ansible, pip-пакеты, Ansible Collections.
-
Подготовка Nexus и Nginx: создание директорий, загрузка образов.
-
Запуск сервисов: docker compose up для Nexus и Nginx.
-
Настройка Nexus: принятие EULA, включение DockerToken realm, смена пароля.
-
Создание docker-hosted репозитория и выполнение docker login.
-
Загрузка локальных образов (*.tar.gz) в Nexus через docker push.
Проверка установки
| Компонент | Проверка | Ожидаемый результат |
|---|---|---|
| Nexus UI | Https://<host>:20443 | Открывается веб-интерфейс Nexus |
| Docker login | docker 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 URL | Https://<host>:20443 |
Установка интеграционной шины (ESB) через Ansible
Общие сведения
Плейбук предназначен для автоматизированного развертывания интеграционной шины (Bercut ESB) с использованием Ansible.
Он обеспечивает установку всех необходимых компонентов — от базовой инфраструктуры (PostgreSQL, VictoriaMetrics, Grafana Alloy, Node Exporter) до прикладных сервисов (Core, Backend, Front, Kong, Nginx, Keycloak, License Server, OpenBao и др.).
Требования к окружению
-
Установленный Ansible 2.13+
-
Python 3.8+
-
Доступ по SSH к целевым хостам от имени root
-
Docker и Docker Compose на всех целевых серверах
-
Настроенный локальный Docker Registry (Подготовительный шаг: установка Registry)
Подготовка inventory и group_vars
Файлы inventory описывают все экземпляры сервисов и их параметры. Пример структуры (inventories/«название кружения»/group_vars/all.yml):
nginx_instances:
- name: nginx1
host: test.dev.localcore_instances:
- name: core1
host: test.dev.local
ports_core: 8090Файл build.descriptor.yml содержит версии и теги Docker-образов всех компонентов, а также адрес приватного реестра (registry).
Этапы выполнения playbook.yml
-
Формирование динамического inventory — добавление хостов из group_vars в группы Ansible.
-
Проверка и исправление /etc/nsswitch.conf и /etc/hosts на целевых узлах.
-
Проверка резолвинга имён из переменных.
-
Развёртывание инфраструктуры (VictoriaMetrics, Node Exporter, Grafana Alloy).
-
Установка и настройка PostgreSQL.
-
Развёртывание Nginx, Kong, Keycloak, License Server, OpenBao.
-
Установка прикладных сервисов: Conf-Serv, Core, Backend, Front, Datamapper, State Collector.
-
Генерация 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 UI | https://kong-test.dev.local |
| Kong Gateway | https://kong-gw-test.dev.local |
| Kong Gateway api (клиентcкий порт) | https://kong-gw-api-test.dev.local |
| Backend | https://backend-test.dev.local/domains |
| Front | https://front-test.dev.local |
| Keycloak | https://keycloak1-test.dev.local |
| State-collector | https://state-collector-test.dev.local/routes/statuses |
| OpenBao | https://openbao-test.dev.local |
| Grafana | https://grafana-test.dev.local |
Возможные ошибки и решения
Ниже представлен список возможных ошибок и варианты их решений.
-
Ошибка резолвинга хоста — проверьте /etc/hosts и убедитесь, что FQDN соответствует IP.
-
Ошибка 'port not reachable' — убедитесь, что сервис запущен и порт не заблокирован firewall.
-
Ошибка при загрузке образов — проверьте доступ к приватному Registry и учетные данные.
-
Ошибка Ansible 'Permission denied' — проверьте доступ по SSH для root или настройте ansible_user.