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 - остановка всей платформы.

Добавление сервиса в уже существующую группу

Для добавления нового сервиса в существующую группу необходимо выполнить несколько действий:

  1. добавить описание контейнера в соответствующий docker-compose.yml файл;
  2. добавить конфигурацию данного сервиса в configs/config.yaml.in файл;
  3. выполнить обновление конфигурации ./update_config.sh;
  4. выполнить первичную регистрацию ./bootstrap.sh;
  5. запустить сервис командой 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 и получить статус "здоров" ✅;
  • сервис должен успешно обработать контрольный запрос, отправленный ему через веб-интерфейс администратора.

health success