45 lines
4.2 KiB
Markdown
45 lines
4.2 KiB
Markdown
# Конфигурация 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.
|