diff --git a/apps/django/d8-ugmk-prod/backend.yaml b/apps/django/d8-ugmk-prod/backend.yaml index 9f4613b..22e45dc 100644 --- a/apps/django/d8-ugmk-prod/backend.yaml +++ b/apps/django/d8-ugmk-prod/backend.yaml @@ -126,9 +126,13 @@ spec: - name: ZITADEL_HOST value: _default: https://sarex-login.uralmine.com + # Включено вместе с message-hub: он консьюмер топика message-hub-stage + # (SETTINGS_TOPICS в apps/message-hub/d8-ugmk-prod/message-hub.yaml), + # а писать в этот топик должен django. Vault-шаблон django-kafka + # и KAFKA_SSL_CAFILE уже есть в base — здесь только флаг. - name: SERVER_KAFKA_ENABLED value: - _default: "False" + _default: "True" - name: KAFKA_TOPICS value: _default: '{"planning": "message-hub-stage", "ams-sync": "ams-sync"}' diff --git a/apps/message-hub/d8-ugmk-prod/kustomization.yaml b/apps/message-hub/d8-ugmk-prod/kustomization.yaml index fed75be..d3995e3 100644 --- a/apps/message-hub/d8-ugmk-prod/kustomization.yaml +++ b/apps/message-hub/d8-ugmk-prod/kustomization.yaml @@ -8,3 +8,7 @@ patches: target: kind: Namespace name: message-hub + - path: message-hub.yaml + target: + kind: HelmRelease + name: message-hub diff --git a/apps/message-hub/d8-ugmk-prod/message-hub.yaml b/apps/message-hub/d8-ugmk-prod/message-hub.yaml new file mode 100644 index 0000000..3d08e55 --- /dev/null +++ b/apps/message-hub/d8-ugmk-prod/message-hub.yaml @@ -0,0 +1,119 @@ +--- +# Патч message-hub для контура УГМК. +# +# ВНИМАНИЕ: envs — список, kustomize заменяет его ЦЕЛИКОМ (JSON merge patch), +# поэтому здесь продублирован весь набор из apps/message-hub/base/message-hub.yaml. +# podAnnotations — map, мержится по ключам, поэтому переопределён только +# agent-inject-template-message-hub-kafka; остальные берутся из base. +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: message-hub + namespace: message-hub +spec: + values: + services: + backend: + # base: production_24425472 от 15.02.2026 — 18 production-релизов назад. + # Здесь актуальный production от 31.07.2026. + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/message-hub:production_e8010fe4 + + envs: + - name: WORKER_TIMEOUT + value: + _default: "60" + + - name: PYTHONPATH + value: + _default: "src" + + - name: SETTINGS_MAX_RETRIES + value: + _default: "1" + + # base: '{"planning": "pm", "assets": "assets_broadcast", "project_entity": "issues_broadcast"}' + # Два исправления: + # 1. ключ project_entity невалиден — TopicsType (src/enums.py) знает только + # assets / planning / issues / resources_updated / resources_deleted, + # на прочих валидатор check_topics_keys кидает ValueError при старте. + # Консьюмер лежит в project_entity.py, но подписан на TopicsType.issues. + # 2. planning был "pm", а django публикует в "message-hub-stage" + # (KAFKA_TOPICS, apps/django/d8-ugmk-prod/backend.yaml) — продюсер + # и консьюмер сидели на разных топиках. + - name: SETTINGS_TOPICS + value: + _default: '{"planning": "message-hub-stage", "assets": "assets_broadcast", "issues": "issues_broadcast"}' + + # В base нет, дефолт True. S3 контура (s3.uralmine.com) отдаёт + # самоподписанный сертификат — тот же случай, что S3_VERIFY=False у pm. + # Флаг общий: гасит проверку TLS сразу и для S3, и для всех HTTP-клиентов. + - name: SETTINGS_VERIFY_SSL + value: + _default: "0" + + # base: http://backend-service.pm.svc.cluster.local:8000 — сервис pm + # называется backend-svc (apps/pm/base/backend.yaml:91). + - name: SAREX_BASE_HOST + value: + _default: "http://backend-svc.pm.svc.cluster.local:8000" + + # В base нет. Без него ServiceConfig с префиксом PM_ уходит + # в дефолт http://localhost:8001. В dsinv и brusnika задан. + - name: PM_HOST + value: + _default: "http://backend-svc.pm.svc.cluster.local:8000" + + # Имена сверены с infrastructure/istio-config/d8-ugmk-prod/istio-config.yaml. + - name: EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + + - name: ISSUES_HOST + value: + _default: "http://backend-svc.issues.svc.cluster.local:80" + + - name: CACHE_HOST + value: + _default: "redis.pm.svc.cluster.local" + + - name: CACHE_PORT + value: + _default: "6379" + + - name: CACHE_SSL + value: + _default: "0" + + # ВНИМАНИЕ: значение не подтверждено. В base было захардкожено + # kafka-kafka-contour-controller-headless — имя из другого контура, + # здесь HelmRelease называется kafka (infrastructure/kafka/d8-ugmk-prod). + # Проверить: kubectl -n kafka get svc + # Задано переменной, а не vault-шаблоном, специально: ошибка в шаблоне + # блокирует старт пода (agent-init-first), ошибка в env — только логи. + - name: KAFKA_HOST + value: + _default: "kafka-controller-headless.kafka.svc.cluster.local" + + - name: KAFKA_PORT + value: + _default: "9092" + + # listeners.client.protocol: SASL_SSL — без CA соединение не поднимется. + - name: KAFKA_SSL_CAFILE + value: + _default: "/usr/local/share/ca-certificates/kafka.crt" + + podAnnotations: + _default: + # Из base убраны KAFKA_HOST/KAFKA_PORT: файл /vault/secrets/message-hub-kafka + # подгружается через `set -a; . file`, то есть переписывает переменные + # окружения. Пока хост не подтверждён, держим его в envs. + vault.hashicorp.com/agent-inject-template-message-hub-kafka: |- + {{- with secret "secrets/data/kafka/apps/message-hub" -}} + KAFKA_USERNAME={{ index .Data.data "username" }} + KAFKA_PASSWORD={{ index .Data.data "password" }} + KAFKA_SECURITY_PROTOCOL={{ index .Data.data.auth "security_protocol" }} + KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }} + {{- end -}}