Add message-hub HelmRelease to d8-ugmk-prod: configure Kafka topics, environment variables, and enable Kafka integration in django.

This commit is contained in:
emelinda 2026-08-05 17:09:39 +03:00
parent 3317bbf5cd
commit 15392f3373
3 changed files with 128 additions and 1 deletions

View File

@ -126,9 +126,13 @@ spec:
- name: ZITADEL_HOST - name: ZITADEL_HOST
value: value:
_default: https://sarex-login.uralmine.com _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 - name: SERVER_KAFKA_ENABLED
value: value:
_default: "False" _default: "True"
- name: KAFKA_TOPICS - name: KAFKA_TOPICS
value: value:
_default: '{"planning": "message-hub-stage", "ams-sync": "ams-sync"}' _default: '{"planning": "message-hub-stage", "ams-sync": "ams-sync"}'

View File

@ -8,3 +8,7 @@ patches:
target: target:
kind: Namespace kind: Namespace
name: message-hub name: message-hub
- path: message-hub.yaml
target:
kind: HelmRelease
name: message-hub

View File

@ -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 -}}