admin control features and admin dashboard
This commit is contained in:
1 parent
c630f13c57
commit
37910e410b
69 files changed
+4959
-400
No files matched your search
+17
-10
@@ -32,15 +32,15 @@ control-api, фоновый оркестратор, база данных, вы
|
||||
```mermaid
|
||||
flowchart TB
|
||||
subgraph OP["Оператор"]
|
||||
CFG["control-api.yaml<br/>(validators, sites, targets,<br/>ip_addresses, check_types)"]
|
||||
CFG["control-api.yaml<br/>(bootstrap пустой БД:<br/>validators, sites, targets,<br/>check_types, ip_addresses)"]
|
||||
ENV["control-api.env<br/>(OS_AUTH_URL, OS_TOKEN, ...)"]
|
||||
ADMIN["curl /api/v1/admin/*"]
|
||||
ADMIN["curl /api/v1/admin/*<br/>(status/ips/validators,<br/>ips submit/cancel,<br/>config CRUD)"]
|
||||
end
|
||||
|
||||
subgraph CAPI["control-api (управляющая машина, 1 экземпляр)"]
|
||||
HTTP["HTTP API<br/>/api/v1/agents/*<br/>/api/v1/probers/*<br/>/api/v1/admin/*<br/>/healthz"]
|
||||
ORCH["Оркестратор: Tick раз в<br/>poll_interval_seconds<br/>claim → associate FIP →<br/>ожидание self-check →<br/>checking → aggregate → release<br/>+ lease sweep + heartbeat sweep"]
|
||||
DB[("SQLite<br/>validators / ip_queue<br/>checks / events")]
|
||||
DB[("SQLite<br/>validators / ip_queue / sites /<br/>target_groups / check_types /<br/>checks / events")]
|
||||
OSCLIENT["OpenStack-клиент<br/>(mode: mock | real)"]
|
||||
end
|
||||
|
||||
@@ -49,9 +49,10 @@ flowchart TB
|
||||
VA["validator-agent ×N<br/>(на каждой ВМ-валидаторе)"]
|
||||
PR["prober ×3<br/>(на каждой внешней площадке)"]
|
||||
|
||||
CFG -->|"читается при старте<br/>(инициализация validators, ip_queue)"| CAPI
|
||||
CFG -->|"читается только один раз,<br/>на пустых таблицах (bootstrap)"| DB
|
||||
ENV -->|"переменные окружения процесса"| OSCLIENT
|
||||
ADMIN --> HTTP
|
||||
HTTP -->|"config/queue CRUD:<br/>источник истины после<br/>первого изменения"| DB
|
||||
HTTP --> ORCH
|
||||
ORCH <--> DB
|
||||
ORCH --> OSCLIENT
|
||||
@@ -63,14 +64,20 @@ flowchart TB
|
||||
|
||||
**Пояснение.** `control-api` — единственный компонент с состоянием и
|
||||
единственная точка принятия решений (какой IP кому назначить, когда
|
||||
считать проверку завершённой). Конфигурация читается один раз при
|
||||
старте процесса (горячей перезагрузки нет — изменения требуют
|
||||
`systemctl restart control-api`, см. [SETUP.md](SETUP.md)). Оркестратор
|
||||
считать проверку завершённой). `control-api.yaml` используется только как
|
||||
одноразовый bootstrap для четырёх секций (`validators`, `sites`,
|
||||
`targets`, `check_types`) — читается лишь пока соответствующая таблица в
|
||||
БД пуста; `ip_addresses` — отдельный, всегда аддитивный путь постановки в
|
||||
очередь при каждом старте. После bootstrap все изменения этих сущностей,
|
||||
включая состав очереди и принудительные повтор/остановку проверки, идут
|
||||
через `/api/v1/admin/*` — «на лету», без `systemctl restart control-api`
|
||||
(см. [API.md](API.md#управление-очередью-и-конфигурацией)). Оркестратор
|
||||
работает по таймеру независимо от HTTP-запросов — назначение IP
|
||||
валидаторам и агрегация результатов не привязаны к конкретному входящему
|
||||
запросу, а выполняются фоновым циклом `Tick`. `validator-agent` и
|
||||
`prober` — активная сторона: они сами инициируют все HTTP-запросы к
|
||||
control-api (pull-модель), сам control-api к ним не обращается.
|
||||
запросу, читая актуальную конфигурацию из БД на каждом проходе, а не
|
||||
единожды при старте. `validator-agent` и `prober` — активная сторона: они
|
||||
сами инициируют все HTTP-запросы к control-api (pull-модель), сам
|
||||
control-api к ним не обращается.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user