From 2aad903a2e3ae709bd823e7f8d674782cfc07833 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 6 Aug 2026 20:08:49 +0500 Subject: [PATCH] ++ --- .../d8-ugmk-prod/kafka-ca-configmap.yaml | 27 ++++++++++ .../d8-ugmk-prod/kustomization.yaml | 1 + .../message-hub/d8-ugmk-prod/message-hub.yaml | 49 ++++++++++++++----- 3 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 apps/message-hub/d8-ugmk-prod/kafka-ca-configmap.yaml diff --git a/apps/message-hub/d8-ugmk-prod/kafka-ca-configmap.yaml b/apps/message-hub/d8-ugmk-prod/kafka-ca-configmap.yaml new file mode 100644 index 0000000..43ffd32 --- /dev/null +++ b/apps/message-hub/d8-ugmk-prod/kafka-ca-configmap.yaml @@ -0,0 +1,27 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: kafka-ca-cert + namespace: message-hub +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/message-hub/d8-ugmk-prod/kustomization.yaml b/apps/message-hub/d8-ugmk-prod/kustomization.yaml index d3995e3..10bb06b 100644 --- a/apps/message-hub/d8-ugmk-prod/kustomization.yaml +++ b/apps/message-hub/d8-ugmk-prod/kustomization.yaml @@ -3,6 +3,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../base + - kafka-ca-configmap.yaml patches: - path: namespace.yaml target: diff --git a/apps/message-hub/d8-ugmk-prod/message-hub.yaml b/apps/message-hub/d8-ugmk-prod/message-hub.yaml index 1fa3afa..05da0ae 100644 --- a/apps/message-hub/d8-ugmk-prod/message-hub.yaml +++ b/apps/message-hub/d8-ugmk-prod/message-hub.yaml @@ -86,36 +86,63 @@ spec: value: _default: "0" - # Подтверждено: kubectl -n kafka get svc → - # kafka-kafka-contour-controller-headless.kafka.svc.cluster.local, - # порты 9094/9092/9093. 9094 — единственный клиентский листенер - # (listeners.client: SASL_SSL в infrastructure/kafka/d8-ugmk-prod/kafka.yaml), - # то же значение, что и в base, и в bootstrap_servers секрета pm. + # Подтверждено вживую (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-controller-headless.kafka.svc.cluster.local" + _default: "kafka-kafka-contour.kafka.svc.cluster.local" - name: KAFKA_PORT value: - _default: "9094" + _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" + + 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: - # Из base убраны KAFKA_HOST/KAFKA_PORT: файл /vault/secrets/message-hub-kafka - # подгружается через `set -a; . file`, то есть переписывает переменные - # окружения. Пока хост не подтверждён, держим его в envs. + # Из 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" -}} 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 -}}