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и получить статус "здоров" ✅; - сервис должен успешно обработать контрольный запрос, отправленный ему через веб-интерфейс администратора.
