Consul-Manager — UI для регистрации сервисов
Назначение сервиса
consul-manager — веб-приложение (Streamlit), упрощающее регистрацию, обновление и удаление сервисов в Consul через HTTP API. Предоставляет таблицу зарегистрированных сервисов и удобные формы для CRUD-операций.
Структура каталогов
config/services/consul-manager/deployment/docker/
├─ docker-compose.yaml # запуск контейнера
├─ .env_example # переменные окружения
└─ src/
└─ consul-manager.py # исходный код Streamlit-приложения
.env параметры
| Переменная | Описание |
|---|---|
CONSUL_MGR_HOST |
Домен, на котором будет доступно UI (Traefik) |
CONSUL_MGR_PORT |
Внутренний порт сервиса (8500) |
SCRAPE_IP |
Список CIDR, которым разрешён доступ (Traefik IPAllowList) |
COMPOSE_PROJECT_NAME |
Префикс контейнера |
Запуск
cd config/services/consul-manager/deployment/docker
cp .env_example .env
# настройте переменные, особенно CONSUL_MGR_HOST и SCRAPE_IP
docker compose up -d
UI будет доступно по https://<CONSUL_MGR_HOST> (Traefik). Без Traefik — раскомментируйте ports: в compose-файле.
Использование
- Введите Management-Token Consul в поле Consul Token.
- Раздел Регистрация сервиса позволяет заполнить форму (Name, Address, Port, Tags, Meta).
- Нажмите Зарегистрировать ➜ сервис появится в Consul.
- В разделе Все сервисы нажмите кнопку, чтобы получить актуальный список.
- Для удаления укажите ID сервиса и нажмите Удалить.
ID формируется как
<address>_<port>_<name>, то же правило используется при обновлении.
Обновление зависимостей
consul-manager использует базовый образ monitoring_python_base. Чтобы обновить библиотеки:
docker compose down
# пересоберите monitoring_python_base при необходимости
docker compose pull consul_manager # если образ хранится в registry
# или пересоберите локально, изменив Dockerfile
Разработка
cd src
streamlit run consul-manager.py
Приложение будет доступно на localhost:8500; для доступа к Consul внутри Docker-сети используйте CONSUL_API_URL = "http://consul-server:8500/v1/agent/service".