feat(infra): стенд целиком — Kafka, Airflow 3, Superset и мониторинг одной командой
Зачем: рядом с кластером ClickHouse не хватало остальной платформы, а поднимать её по кускам — значит каждый раз вспоминать порядок. Теперь `make up` даёт стенд целиком, а `make smoke` честно отвечает, работает он или нет. Что: - Kafka в режиме KRaft (без ZooKeeper), Postgres под метаданные, Airflow 3.3 четырьмя сервисами и Superset 6.1 с драйверами ClickHouse; - мониторинг: Prometheus снимает метрики с обеих нод ClickHouse и keeper, Grafana получает подготовленный источник данных; - подключение Airflow ведёт на ноду 1, подключение Superset — на ноду 2: ловушка правильных ошибок, забытый `ON CLUSTER` виден в дашборде сам; - `scripts/stand-smoke.sh` — сквозная проверка из 24 пунктов: топик в Kafka, цели Prometheus, запуск примера DAG через API Airflow, проверка подключения Superset и расход памяти против порога 3,4 ГБ; - `make config-test` — статические ворота: Compose, синтаксис Bash и Python, стражи README; стражи smoke проверяют, что отчёт краснеет на сломанном стенде и зеленеет после восстановления; - решения записаны в `docs/adr/0001-stand-services.md`, состав стенда и порядок работы — в README. Проверка: на чистых томах `make clean` → `cp .env.example .env` → `make up` (1 мин 51 с) → `make smoke` — 24 пройдено, 0 ошибок, 2171 MiB. Перезапуск `make down` → `make up` → `make smoke` — 24/0. Также зелены `make config-test` (3/0 и 5/0), `make smoke-cluster` (8/8) и `make smoke-guards` (3/0 и 3/0). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+27
-1
@@ -4,4 +4,30 @@ CLICKHOUSE_01_HTTP_PORT=28123
|
||||
CLICKHOUSE_01_TCP_PORT=29000
|
||||
CLICKHOUSE_02_HTTP_PORT=28124
|
||||
CLICKHOUSE_02_TCP_PORT=29001
|
||||
|
||||
KAFKA_IMAGE=apache/kafka:4.3.1
|
||||
KAFKA_EXTERNAL_PORT=29092
|
||||
PROMETHEUS_IMAGE=prom/prometheus:v3.13.2
|
||||
PROMETHEUS_PORT=29090
|
||||
GRAFANA_IMAGE=grafana/grafana:13.1.1
|
||||
GRAFANA_PORT=23000
|
||||
GRAFANA_ADMIN_USER=admin
|
||||
GRAFANA_ADMIN_PASSWORD=admin
|
||||
POSTGRES_IMAGE=postgres:16-alpine
|
||||
POSTGRES_ADMIN_USER=postgres
|
||||
POSTGRES_ADMIN_PASSWORD=postgres-local
|
||||
AIRFLOW_METADATA_USER=airflow
|
||||
AIRFLOW_METADATA_PASSWORD=airflow-local
|
||||
SUPERSET_METADATA_USER=superset
|
||||
SUPERSET_METADATA_PASSWORD=superset-local
|
||||
AIRFLOW_IMAGE=apache/airflow:3.3.0
|
||||
AIRFLOW_PORT=28080
|
||||
AIRFLOW_ADMIN_USER=admin
|
||||
AIRFLOW_ADMIN_PASSWORD=airflow
|
||||
AIRFLOW_JWT_SECRET=local-only-airflow-jwt-secret-do-not-use
|
||||
AIRFLOW_API_SECRET_KEY=local-only-airflow-api-secret-do-not-use
|
||||
AIRFLOW_FERNET_KEY=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||
SUPERSET_IMAGE=apache/superset:6.1.0
|
||||
SUPERSET_PORT=28088
|
||||
SUPERSET_ADMIN_USER=admin
|
||||
SUPERSET_ADMIN_PASSWORD=superset
|
||||
SUPERSET_SECRET_KEY=local-only-superset-secret-do-not-use-outside-this-stand
|
||||
|
||||
Reference in New Issue
Block a user