Files
cloud-ip-validator/README.md
T

54 lines
4.9 KiB
Markdown
Raw Normal View History

2026-08-21 07:34:45 +03:00
# Cloud IP Validator
Система проверки освобождённых публичных IPv4-адресов перед их повторной
выдачей: каждый адрес временно привязывается как Floating IP к
ВМ-валидатору в облаке (OpenStack) и проверяется одновременно в двух
2026-08-21 07:34:45 +03:00
направлениях — исходящий трафик валидатора (egress: HTTPS/ICMP/опционально
SSH до внешних целей) и входящая доступность самого адреса с нескольких
2026-08-21 07:34:45 +03:00
независимых внешних площадок (inbound: TCP 22/80/443/8080 + ICMP). Итог по
каждому адресу — `pass`/`partial`/`fail`, с полной историей проверок,
которая сохраняется даже после того, как адрес убрали из очереди (см.
[«Реестр адресов»](docs/USAGE.md#реестр-адресов-и-глубина-истории)).
2026-08-21 07:34:45 +03:00
## Роли компонентов
| Компонент | Роль | Состояние | Где работает |
|---|---|---|---|
| `control-api` | Управляющий сервис: ведёт очередь адресов и реестр их истории, назначает валидаторов, агрегирует результаты. Единственная точка, с которой общаются все остальные компоненты. | Хранит (SQLite) | Одна управляющая машина |
| `validator-agent` | Привязывает к себе выданный Floating IP и прогоняет egress-проверки до внешних целей. | Без состояния | Каждая ВМ-валидатор в облаке |
| `prober` | Проверяет входящую доступность адреса снаружи (TCP/ICMP) — с независимой от облака сети. | Без состояния | Каждая внешняя тестовая площадка |
| `admin-dashboard` | Браузерная админ-панель — то же самое, что доступно через API `control-api`, но графически. Опционален. | Без состояния | Любая машина с сетевым доступом к `control-api` |
Все четыре общаются между собой **только** через HTTP API `control-api` —
прямых связей между остальными компонентами нет. Подробная схема
control/data plane — в [docs/DIAGRAMS.md](docs/DIAGRAMS.md).
2026-08-21 07:34:45 +03:00
## Документация
| Документ | Для чего |
|---|---|
| [docs/SETUP.md](docs/SETUP.md) | Развёртывание с нуля: бинарники или сборка из исходников, конфигурация, systemd **и** Docker/docker-compose — пошагово |
| [docs/USAGE.md](docs/USAGE.md) | Повседневная работа: постановка адресов в очередь, сканирование Floating IP, наблюдение за статусом, реестр и история, разбор результатов |
| [docs/API.md](docs/API.md) | Спецификация HTTP API `control-api` и примеры запросов (curl) |
| [docs/DASHBOARD.md](docs/DASHBOARD.md) | Устройство `admin-dashboard`: страницы, поиск/фильтр, обработка ошибок |
| [docs/DIAGRAMS.md](docs/DIAGRAMS.md) | Диаграммы потоков данных: control plane, egress-проверка, телеметрия |
2026-08-21 07:34:45 +03:00
| [docs/LOCAL_E2E.md](docs/LOCAL_E2E.md) | Полностью офлайн-прогон всей системы одним скриптом — без реального облака и интернета |
| [docs/CONTROL_DATA_PLANE.html](docs/CONTROL_DATA_PLANE.html) | Презентационные схемы control/data plane для docker-compose-деплоя — открыть в браузере |
2026-08-21 07:34:45 +03:00
## Быстрый старт
2026-08-21 07:34:45 +03:00
Посмотреть систему в работе без реального облака (60 секунд):
2026-08-21 07:34:45 +03:00
```bash
go build ./... && go test ./...
scripts/run-local-e2e.sh
```
Поднимет все компоненты как локальные процессы (`openstack.mode: mock`) и
прогонит тестовый адрес через полный цикл проверки. Подробности —
[docs/LOCAL_E2E.md](docs/LOCAL_E2E.md).
2026-08-21 07:34:45 +03:00
Для реального стенда (systemd-юниты или Docker/docker-compose, на одной
машине или распределённо) — по шагам в
[docs/SETUP.md](docs/SETUP.md), начиная с
[«Получение бинарников»](docs/SETUP.md#получение-бинарников).