Docker
Самый простой и быстрый способ запустить стенд платформы «Агредатор»
- это использовать шаблон, как описано в разделе Быстрый запуск. Этот способ подразумевает запуск всех компонентов системы на одном узле (виртуальной машине или bare-metal хосте).
Шаблон конфигурации поставляется в виде архива и состоит из нескольких файлов. Он может включать как настройку сервисов, так и вспомогательные скрипты для упрощения запуска и обслуживания сервисов. Основными файлами являются docker-compose.yml
и config.yaml
. Шаблон разбит на три группы сервисов infra
, core
и services
в соответствии с Описанием компонентов «Агредатора».
Данный способ запуска может использоваться в продуктовой эксплуатации, если нет повышенных требований к отказоустойчивости и доступности. Однако и в этом случае рекомендованным режимом является запуск группы infra
на отдельном узле.
Структура конфигурации
.
# Инфраструктурная группа контейнеров
├── infra
│ ├── docker-compose.yml
│ └── .env # Настройки стенда/кластера
# Ядро платформы
├── core
│ ├── configs # Runtime конфигурация ядра
│ ├── docker-compose.yml
│ ├── .env.configurator # Настройки запуска (адреса и доступы)
│ └── .env # Настройки стенда/кластера
# Сервисы и адаптеры
├── services
│ ├── configs # Runtime конфигурация сервисов
│ ├── docker-compose.yml
│ ├── .env.configurator # Настройки запуска сервисов
│ └── .env # Настройки стенда/кластера
└── base-service.yml
Работа с сервисами
В процессе эксплуатации платформы будет возникать необходимость обслуживания запущенных сервисов. Для решения типовых задач шаблон конфигурации содержит вспомогательные скрипты:
./run.sh
- запуск всех контейнеров группы;./pull.sh
- обновление всех образов, если новые версии доступны в реестре;./stop.sh
- остановка всех контейнеров в группе;./update_config.sh
- прогрузка конфигурации группы из файлаconfigs/config.yaml.in
вconsul
;./bootstrap.sh
- первичная инициализация сервисов.
Для запуска, остановки или обновления всей платформы аналогичные скрипты находятся в корневой папке шаблона:
./run.sh
- запуск всей платформы;./pull.sh
- обновление всех образов, если новые версии доступны в реестре;./stop.sh
- остановка всей платформы.
Добавление сервиса в уже существующую группу
Для добавления нового сервиса в существующую группу необходимо выполнить несколько действий:
- добавить описание контейнера в соответствующий
docker-compose.yml
файл; - добавить конфигурацию данного сервиса в
configs/config.yaml.in
файл; - выполнить обновление конфигурации
./update_config.sh
; - выполнить первичную регистрацию
./bootstrap.sh
; - запустить сервис командой
docker-compose up -d
.
docker-compose.yml:
uprid3:
<<: *base
image: ${REGISTRY_ADDR}/aggredator/service-uprid3:${SERVICE_TAG}
environment:
AGGREDATOR_COMPONENT: service
configs/config.yaml.in:
uprid3:
<<: [*generic, *log, *dbconfig, *mqconfig]
DATABASE_URL: "postgresql://${DATABASE_USER}:${DATABASE_PASS}@${DATABASE_HOST}:${DATABASE_PORT}/aggredator-service-uprid3?pool=5"
DATABASE_NAME: "aggredator-service-uprid3"
CA_CERT: consul://${CONSUL_KV_NAMESPACE}services/ca/private/cacert.pem
CLIENT_CERT: consul://${CONSUL_KV_NAMESPACE}services/ca/private/uprid3/cert.pem
CLIENT_KEY: consul://${CONSUL_KV_NAMESPACE}services/ca/private/uprid3/key.pem
SERVICE_ROUTING_CODE: "${UPRID3_SERVICE_ROUTING_CODE}" # Параметр задается в .env.configurator
SMEV_SERVICE: "${UPRID3_SMEV_SERVICE}" # Параметр задается в .env.configurator
UPRID_VERSION: "1.4.0"
Первичная инициализация сервиса
При первом запуске сервиса его необходимо зарегистрировать в платформе. Это можно сделать через веб-интерфейс администратора системы (создать сервис с соответствующим именем) или выполнить скрипт bootstrap.sh
. Данный скрипт можно безопасно выполнять несколько раз. Следующим шагом является инициализация настроек, она выполняется скриптом update_config.sh
, который загружает настройки из configs/config.yaml.in
в consul
.
При изменении конфигурации сервиса в configs/config.yaml.in
и загрузки её в consul
необходимо перезапускать соответствующий сервис!
Проверка работоспособности сервиса
После запуска сервиса необходимо провести проверку его работоспособности. Критериями успешности являются:
- стабильность запущенного контейнера: контейнер не должен перезапускаться;
- сервис должен успешно зарегистрироваться в реестре сервисов
consul
и получить статус "здоров" ✅; - сервис должен успешно обработать контрольный запрос, отправленный ему через веб-интерфейс администратора.