iac/apps/message-hub/d8-ugmk-prod/message-hub.yaml

120 lines
5.6 KiB
YAML
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.

---
# Патч 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 -}}