Автонастройка kafka-ui

This commit is contained in:
2025-10-12 17:49:30 +03:00
parent 919dee8e8b
commit ba3e681645
3 changed files with 14 additions and 4 deletions
+1
View File
@@ -22,3 +22,4 @@ KAFKA_TOPIC=orders
KAFKA_BATCH_SIZE=500 KAFKA_BATCH_SIZE=500
KAFKA_POLL_TIMEOUT=10 KAFKA_POLL_TIMEOUT=10
KAFKA_MAX_EMPTY_POLLS=3 KAFKA_MAX_EMPTY_POLLS=3
KAFKA_UI_CLUSTER_NAME=KafkaCluster
+9 -1
View File
@@ -16,6 +16,7 @@ Airflow по‑прежнему использует **Postgres** только
- **Airflow (2.9)** — оркестрация пайплайна, metadata в Postgres. - **Airflow (2.9)** — оркестрация пайплайна, metadata в Postgres.
- **DAG** `kafka_to_greenplum.py` — генерирует данные → пишет в Kafka → читает и грузит в Greenplum. - **DAG** `kafka_to_greenplum.py` — генерирует данные → пишет в Kafka → читает и грузит в Greenplum.
- **DAG** `greenplum_data_quality.py` — выполняет проверки качества данных (наличие таблицы, схема, заполненность, дубли). - **DAG** `greenplum_data_quality.py` — выполняет проверки качества данных (наличие таблицы, схема, заполненность, дубли).
- **Kafka UI** — автоматически подключается к стендовому брокеру (bootstrap берётся из `KAFKA_BOOTSTRAP` или значения по умолчанию).
- **DDL** `sql/ddl_gp.sql` — создаёт колонночную таблицу `orders` без PRIMARY KEY (AO-таблицы GP6 не поддерживают его), распределённую по `order_id`; контроль дублей реализован в DAG. - **DDL** `sql/ddl_gp.sql` — создаёт колонночную таблицу `orders` без PRIMARY KEY (AO-таблицы GP6 не поддерживают его), распределённую по `order_id`; контроль дублей реализован в DAG.
> Примечание по версиям и надёжности: используется образ `woblerr/greenplum:6.27.1` с поддержкой переменных окружения и fallback значениями. Для продакшен‑подобных тестов зафиксируй digest (SHA256) конкретного тега на Docker Hub. > Примечание по версиям и надёжности: используется образ `woblerr/greenplum:6.27.1` с поддержкой переменных окружения и fallback значениями. Для продакшен‑подобных тестов зафиксируй digest (SHA256) конкретного тега на Docker Hub.
@@ -73,7 +74,7 @@ airflow connections add 'greenplum_conn' \
### Интерфейсы и порты ### Интерфейсы и порты
- Airflow UI: http://localhost:8080 (admin/admin по умолчанию) - Airflow UI: http://localhost:8080 (admin/admin по умолчанию)
- Kafka UI: http://localhost:8082 (просмотр топиков/сообщений) - Kafka UI: http://localhost:8082 (просмотр топиков/сообщений; подключение к кластеру создаётся автоматически)
- Greenplum: `localhost:${GP_PORT:-5432}` (внешний порт проброшен из контейнера) - Greenplum: `localhost:${GP_PORT:-5432}` (внешний порт проброшен из контейнера)
- Postgres (Airflow metadata): `localhost:5433` - Postgres (Airflow metadata): `localhost:5433`
- Kafka (для клиентов на хосте): `localhost:9092` - Kafka (для клиентов на хосте): `localhost:9092`
@@ -122,6 +123,13 @@ SELECT count(*) FROM public.orders;
- `GP_CONN_ID` — ID Airflow Connection (по умолчанию: `greenplum_conn`) - `GP_CONN_ID` — ID Airflow Connection (по умолчанию: `greenplum_conn`)
- `GP_USE_AIRFLOW_CONN` — использовать ли Airflow Connection (`true`/`false`). Если `false`, DAG подключается к БД напрямую по ENV. - `GP_USE_AIRFLOW_CONN` — использовать ли Airflow Connection (`true`/`false`). Если `false`, DAG подключается к БД напрямую по ENV.
Настройки Kafka берутся из тех же переменных окружения:
- `KAFKA_BOOTSTRAP` — bootstrap-адрес брокера для Airflow и Kafka UI (по умолчанию `kafka:29092`).
- `KAFKA_TOPIC` — имя демо-топика (по умолчанию `orders`).
- `KAFKA_BATCH_SIZE`, `KAFKA_POLL_TIMEOUT`, `KAFKA_MAX_EMPTY_POLLS` — параметры чтения/загрузки (см. раздел выше).
- `KAFKA_UI_CLUSTER_NAME` — отображаемое имя кластера в Kafka UI (по умолчанию `KafkaCluster`).
Образ `woblerr/greenplum:6.27.1` использует переменные: Образ `woblerr/greenplum:6.27.1` использует переменные:
- `GREENPLUM_USER` (маппится на `GP_USER`) - `GREENPLUM_USER` (маппится на `GP_USER`)
- `GREENPLUM_PASSWORD` (маппится на `GP_PASSWORD`) - `GREENPLUM_PASSWORD` (маппится на `GP_PASSWORD`)
+4 -3
View File
@@ -64,12 +64,13 @@ services:
kafka-ui: kafka-ui:
image: provectuslabs/kafka-ui:v0.7.2 image: provectuslabs/kafka-ui:v0.7.2
env_file: .env
ports: ports:
- 8082:8080 - 8082:8080
environment: environment:
- DYNAMIC_CONFIG_ENABLED=true DYNAMIC_CONFIG_ENABLED: "true"
- KAFKA_CLUSTERS_0_NAME=KafkaCluster KAFKA_CLUSTERS_0_NAME: ${KAFKA_UI_CLUSTER_NAME:-KafkaCluster}
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:29092 KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: ${KAFKA_BOOTSTRAP:-kafka:29092}
volumes: volumes:
- kafka-ui-data:/app/data - kafka-ui-data:/app/data
depends_on: depends_on: