iac/apps/documentations/outbox-relay.CONFIGURATION.md
diamondrigido d318ea3f16 feat: дополнительные поддержка
1. outbox-relay для кафка
2. маршрутизация
2026-10-30 16:46:21 +02:00

45 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Конфигурация outbox-relay
`outbox-relay` (репозиторий `outbox-relay`, образ `outbox-relay`) — воркер transactional outbox для cde-api: опрашивает таблицу `outbox` в БД cde-api и публикует события в Kafka. HelmRelease `outbox-relay` в ns `documentations`, Service нет, 1 реплика. Манифест — `base/outbox-relay.yaml` и одноимённые файлы в `ugok/`, `brusnika-*/`, `wb/`.
Миграции не запускает: таблицу `outbox` создаёт cde-api (`migrations/001_create_outbox.sql` из репозитория relay нужно включить в миграции cde-api). БД — **общая с documentations** (как и у cde-api), поэтому таблица `outbox` появляется в БД documentations.
## Переменные окружения
Префикс `OUTBOX_RELAY_`, секции через `__`.
| Переменная | Значение | Комментарий |
| --- | --- | --- |
| `APP_NAME`, `APP_VERSION` | `cde-api-outbox-relay`, `0.1.0` | |
| `SOURCE_SERVICE`, `SOURCE_VERSION` | `cde-api`, `0.1.0` | значения поля source в envelope событий |
| `LOG_LEVEL` | `info` | |
| `PG__SSLMODE` | `disable` | как у cde-api в iac (общий Postgres без TLS) |
| `PG__POOL_MIN` / `PG__POOL_MAX` | `1` / `3` | |
| `PG__TABLE` | `outbox` | |
| `PG__HOST/PORT/NAME/USER/PASSWORD` | Vault `secrets/data/apps/documentations/postgres` (vault-контуры) или литералы + секрет БД контура | та же БД, что у cde-api |
| `POLL_INTERVAL` / `BATCH_SIZE` | `500ms` / `100` | |
| `MAX_ATTEMPTS` / `INITIAL_BACKOFF` / `MAX_BACKOFF` | `8` / `1s` / `5m` | |
| `SHUTDOWN_TIMEOUT` | `30s` | |
| `KAFKA__BROKERS` | см. таблицу ниже | |
| `KAFKA__SECURITY_PROTOCOL` | `SASL_SSL` (vault-контуры) / `SSL` (остальные) | включает TLS; SASL включается, если задан `SASL_USERNAME` |
| `KAFKA__INSECURE_SKIP_VERIFY` | `true` | сертификат брокера не проверяется, CA не нужен; клиентский сертификат (mTLS) relay не поддерживает |
| `KAFKA__SASL_MECHANISM/USERNAME/PASSWORD` | Vault `secrets/data/kafka/apps/documentations` | только vault-контуры |
В `.helm/values.yaml` репозитория relay используются `KAFKA__HOST/PORT` и секрет `cde-api-kafka-secret`; в iac вместо них — `KAFKA__BROKERS` и адреса Kafka своего контура.
## Kafka по контурам
| Контур | Brokers | Протокол | Проверка сертификата | Аутентификация |
| --- | --- | --- | --- | --- |
| `base` (`sarex-contour`, `yc-k8s-test`, `d8-ugmk-prod`, `uralkal`, `vad`) | `kafka-kafka-contour.kafka.svc.cluster.local:9092` | `SASL_SSL` | не проверяется | Vault `secrets/data/kafka/apps/documentations` |
| `wb` | `wb-prod-kafka-bootstrap.kafka.svc.cluster.local:9093` | `SSL` | не проверяется | нет (как у pm) |
| `ugok` | `ugok-prod-kafka-bootstrap.kafka.svc.cluster.local:9093` | `SSL` | не проверяется | нет |
| `brusnika-prod`, `brusnika-stage` | `brusnika-stage-kafka-bootstrap.kafka.svc.cluster.local:9093` | `SSL` | не проверяется | нет |
## Допущения и что нужно проверить
- **Vault:** путь `secrets/data/kafka/apps/documentations` (SCRAM-пользователь с правом писать в топики cde-api) нужно создать, роль `documentations` — разрешить его чтение.
- **`brusnika-prod`:** адрес Kafka взят из brusnika-stage (так указано в `bi/brusnika-prod`, у pm в brusnika-prod Kafka не настроена).
- **`sarex-contour`, `yc-k8s-test`:** адрес `kafka-kafka-contour` взят у остальных vault-контуров; сверить с `infrastructure/kafka/<кластер>`.
- Топики событий (39 штук, список — `docs/cde-api-rollout.md`, раздел 5) создаёт команда инфраструктуры до запуска relay.