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