apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: rabbitmq namespace: rabbitmq spec: interval: 5m timeout: 10m # Вырезаем ресурсы ПОСЛЕ рендера чарта. Через values это недостижимо: # * `null` до Helm не доезжает — kustomize нормализует его в {}; # * `{}` Helm сливает с дефолтом (coalesceMaps), и дефолт возвращается. # postRenderers работает уже с готовым манифестом, где коалесинг позади. # # Что вырезаем: собственные Gateway/VirtualService/Certificate чарта на # посторонний домен rabbitmq.infra.sarex.io. Маршрутизация контура описана # централизованно в infrastructure/istio-config/aero. # # Особенно важен rmq-tls: домен не наш, ACME отдаёт 503 и проверка не пройдёт # никогда. Пока он был в релизе, Helm ждал его выпуска, install падал по # таймауту, срабатывал откат — и весь слой infra-controllers стоял. postRenderers: - kustomize: patches: - target: kind: Gateway name: rmq-gateway patch: | $patch: delete apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: rmq-gateway namespace: gateway - target: kind: VirtualService name: rmq-virt-service patch: | $patch: delete apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: rmq-virt-service namespace: rabbitmq - target: kind: Certificate name: rmq-tls patch: | $patch: delete apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: rmq-tls namespace: gateway values: global: security: allowInsecureImages: true # Собственные VirtualService/Gateway/Certificate чарта отключаются НЕ здесь, # а JSON6902-патчем в kustomization.yaml рядом. Причина — в противоположной # семантике null у двух инструментов: # # Helm : удалить дефолт можно ТОЛЬКО значением null; # {} он глубоко сливает с дефолтом, и дефолт остаётся; # kustomize : в strategic-merge-патче null означает УДАЛИТЬ КЛЮЧ, # то есть до Helm он просто не доедет. # # Значит ни `virtualService: null`, ни `virtualService: {}` здесь не # работают: первое стирается kustomize, второе игнорируется Helm. Нужен # JSON6902, где null — это именно значение, а не команда удаления. # # Цена ошибки не косметическая: чарт создавал rmq-gateway, rmq-virt-service # и сертификат rmq-tls на посторонний домен rabbitmq.infra.sarex.io. # Последний не проходит проверку ACME никогда, впустую жжёт лимиты # Let's Encrypt, а релиз висит в install, ожидая его выпуска, и блокирует # весь слой infra-controllers. metrics: serviceMonitor: enabled: false default: enabled: false perObject: enabled: false detailed: enabled: false extraServiceMonitors: [] replicaCount: 1 persistence: storageClass: local-path size: 8Gi resources: requests: memory: 512Mi # Логин/пароль приезжают из Vault через vault-agent-injector: секрет кладёт # ansible (роль sarex_stack, vault_app_secrets), роль rabbitmq в # auth/kubernetes создаётся там же. auth: securePassword: true existingPasswordSecret: "" vault: enabled: true role: rabbitmq authPath: auth/kubernetes secretPath: secrets/data/rabbitmq/auth usernameKey: username passwordKey: password