From f2223ceab4f5bed001d16206e72ad1527f327de8 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 7 Aug 2026 12:52:30 +0500 Subject: [PATCH] ++ --- .../message-hub/d8-ugmk-prod/message-hub.yaml | 37 -------------- apps/pm/d8-ugmk-prod/backend.yaml | 49 ++++++++++++++++--- apps/pm/d8-ugmk-prod/kafka-ca-configmap.yaml | 27 ++++++++++ apps/pm/d8-ugmk-prod/kustomization.yaml | 1 + 4 files changed, 70 insertions(+), 44 deletions(-) create mode 100644 apps/pm/d8-ugmk-prod/kafka-ca-configmap.yaml diff --git a/apps/message-hub/d8-ugmk-prod/message-hub.yaml b/apps/message-hub/d8-ugmk-prod/message-hub.yaml index c8a41d9..72f7467 100644 --- a/apps/message-hub/d8-ugmk-prod/message-hub.yaml +++ b/apps/message-hub/d8-ugmk-prod/message-hub.yaml @@ -33,39 +33,21 @@ spec: 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-prod", "assets":"assets_broadcast","issues": "issues_broadcast_prod", "resources_updated": "iam.resource.updated.v2", "resources_deleted": "iam.resource.deleted.v2"}' - - # В 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" @@ -86,16 +68,6 @@ spec: value: _default: "0" - # Подтверждено вживую (kubectl exec в kafka-kafka-contour-controller-0, - # server.properties): реальный CLIENT-листенер (SASL_SSL) — порт 9092 - # на обычном (не headless) сервисе kafka-kafka-contour. Порт 9094 — - # это INTERNAL (SASL_PLAINTEXT, inter-broker), не для приложений; - # 9093 — CONTROLLER (raft, свой API, METADATA не поддерживает). - # Сертификат брокера (SAN) покрывает голое имя kafka-kafka-contour, - # но НЕ голое имя headless-сервиса (только *. с одним - # префиксом-подом) — поэтому именно обычный сервис, не headless. - # Задано переменной, а не vault-шаблоном, специально: ошибка в шаблоне - # блокирует старт пода (agent-init-first), ошибка в env — только логи. - name: KAFKA_HOST value: _default: "kafka-kafka-contour.kafka.svc.cluster.local" @@ -104,15 +76,9 @@ spec: value: _default: "9092" - # listeners.client.protocol: SASL_SSL — без CA соединение не поднимется. - name: KAFKA_SSL_CAFILE value: _default: "/usr/local/share/ca-certificates/kafka.crt" - - # В секрете pm security_protocol = SASL_PLAINTEXT — верно для того, - # как им пользуется сам pm, но реальный листенер (см. выше) требует - # SASL_SSL. Фиксируем тут, а не из вольта, чтобы не переписать это - # значение обратно на PLAINTEXT — по той же причине, что и KAFKA_HOST/PORT. - name: KAFKA_SECURITY_PROTOCOL value: _default: "SASL_SSL" @@ -136,9 +102,6 @@ spec: podAnnotations: _default: - # Из base убраны KAFKA_HOST/KAFKA_PORT/KAFKA_SECURITY_PROTOCOL: файл - # /vault/secrets/message-hub-kafka подгружается через `set -a; . file`, - # то есть переписывает переменные окружения поверх envs. vault.hashicorp.com/agent-inject-secret-message-hub-kafka: secrets/data/kafka/apps/pm vault.hashicorp.com/agent-inject-template-message-hub-kafka: |- {{- with secret "secrets/data/kafka/apps/pm" -}} diff --git a/apps/pm/d8-ugmk-prod/backend.yaml b/apps/pm/d8-ugmk-prod/backend.yaml index d32d734..6d142ee 100644 --- a/apps/pm/d8-ugmk-prod/backend.yaml +++ b/apps/pm/d8-ugmk-prod/backend.yaml @@ -15,8 +15,6 @@ spec: values: services: backend: - # base: production_a889f6a3 (релиз 1.14.1, 13.07.2026). - # Здесь 1.14.7 — pipeline 72144, зелёный. image: name: _default: cr.yandex/crp3ccidau046kdj8g9q/pm-backend:production_fa0f1551 @@ -29,14 +27,11 @@ spec: [ -f /vault/secrets/pm-db ] && . /vault/secrets/pm-db [ -f /vault/secrets/pm-rabbitmq ] && . /vault/secrets/pm-rabbitmq [ -f /vault/secrets/pm-s3 ] && . /vault/secrets/pm-s3 + [ -f /vault/secrets/pm-kafka ] && . /vault/secrets/pm-kafka set +a python manage.py makemigrations pm --noinput python manage.py migrate exec /opt/sarex/entrypoint.sh - - # ВНИМАНИЕ: envs — список, kustomize заменяет его ЦЕЛИКОМ, - # поэтому здесь продублирован весь набор из apps/pm/base/backend.yaml. - # Отличия от base помечены комментариями. envs: - name: USERS_INTERNAL_HOST value: @@ -123,7 +118,23 @@ spec: - name: KAFKA_ENABLE value: - _default: "False" + _default: "True" + + - name: KAFKA_BOOTSTRAP_SERVERS + value: + _default: '["kafka-kafka-contour.kafka.svc.cluster.local:9092"]' + + - name: KAFKA_SECURITY_PROTOCOL + value: + _default: "SASL_SSL" + + - name: KAFKA_SSL_CAFILE + value: + _default: "/usr/local/share/ca-certificates/kafka.crt" + + - name: KAFKA_TOPICS + value: + _default: '{"planning": "message-hub-prod"}' - name: AUTH_PUBLIC_TOKEN_URL value: @@ -157,6 +168,23 @@ spec: value: _default: "INFO" + volumes: + _default: + - name: kafka-ca-cert + mountPath: + _default: /usr/local/share/ca-certificates/kafka.crt + subPath: + _default: kafka.crt + readOnly: + _default: true + configMap: + name: + _default: kafka-ca-cert + items: + - key: kafka.crt + path: + _default: kafka.crt + podAnnotations: _default: vault.hashicorp.com/agent-inject-template-pm-s3: |- @@ -168,3 +196,10 @@ spec: {{- $buckets := index .Data.data "buckets" }} S3_BUCKET={{ if gt (len $buckets) 0 }}{{ index (index $buckets 0) "name" }}{{ else }}sarex-media-storage{{ end }} {{- end -}} + vault.hashicorp.com/agent-inject-secret-pm-kafka: secrets/data/kafka/apps/pm + vault.hashicorp.com/agent-inject-template-pm-kafka: |- + {{- with secret "secrets/data/kafka/apps/pm" -}} + KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }} + KAFKA_SASL_PLAIN_USERNAME={{ index .Data.data "username" }} + KAFKA_SASL_PLAIN_PASSWORD={{ index .Data.data "password" }} + {{- end -}} diff --git a/apps/pm/d8-ugmk-prod/kafka-ca-configmap.yaml b/apps/pm/d8-ugmk-prod/kafka-ca-configmap.yaml new file mode 100644 index 0000000..9b76d6b --- /dev/null +++ b/apps/pm/d8-ugmk-prod/kafka-ca-configmap.yaml @@ -0,0 +1,27 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: kafka-ca-cert + namespace: pm +data: + kafka.crt: | + -----BEGIN CERTIFICATE----- + MIIDETCCAfmgAwIBAgIQI30u4fwgUnGBxyLicuU5EzANBgkqhkiG9w0BAQsFADAT + MREwDwYDVQQDEwhrYWZrYS1jYTAeFw0yNjA3MTMxNzQwNDJaFw0yNzA3MTMxNzQw + NDJaMBMxETAPBgNVBAMTCGthZmthLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A + MIIBCgKCAQEAudTWG0AwdqIMqbqGwjf9CY0BMMQm+HDPRkzMnXqVCSqAYLBLuPBC + h4+qm+IKAIpiJrO5pCDxeU1mVqMgRnXcdYyuefCzlTAKMNuM1CVM4ou695B0zKiy + D+7NHsdhuoH/ne3jCa8VpylDfKWsxcq3tDCdtZ5drPK80g2o0eo2LHx4erJtSABV + tqCrcIuy1nClAwGY4ejO+psr+gIzrHdYzve6YRRFBqVp6sJHcW1Cj6wOpHax4pcM + Srh5EcZ4dk434UNOZy2Ebji/9Lwxn0CiXtPTHYGTgNLhujurylFM1nUx69QgsR3C + GRZSY3R8Kegd4bzzhHfoBMQvl5Py+0o85QIDAQABo2EwXzAOBgNVHQ8BAf8EBAMC + AqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQFMAMB + Af8wHQYDVR0OBBYEFKhTGCqho/YjUZK1ndypuYs970kcMA0GCSqGSIb3DQEBCwUA + A4IBAQBvIzVhkzib6LJxt3tUkDFy87Yf1gG+rRVZiL/ZGrOsQlvBt4eLzZIytAvL + QaZHY+imIyzURj57IFfyFM1fEPRhc9et0VaRYxGwapLljez0jqPedM8rCsunJmVP + KrQxAfvbmHvcZ8k51tpD+YydmoARjBmoRdRIuLTDsuLv0Szg45M/7I4px2ycGN2j + kF7jVwF56u2eIrUGybnsH2qg+MY7devv3rG1Y1YV7HEwMAAeN1n5JLxxuA1AIW/j + TyZD8hICp8OLzWGTG9b3GZJK9FXbDHSKXemJr0hyjoxsW27nHsXcmV5Oe2OkTKw8 + fdA17/ibw6gFrH2b3vZKcx8D455V + -----END CERTIFICATE----- diff --git a/apps/pm/d8-ugmk-prod/kustomization.yaml b/apps/pm/d8-ugmk-prod/kustomization.yaml index 481f2b6..b3cf4eb 100644 --- a/apps/pm/d8-ugmk-prod/kustomization.yaml +++ b/apps/pm/d8-ugmk-prod/kustomization.yaml @@ -4,6 +4,7 @@ kind: Kustomization resources: - ../base - redis.yaml + - kafka-ca-configmap.yaml patches: - path: namespace.yaml target: