apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: rabbitmq namespace: rabbitmq spec: interval: 2m 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, и это намеренно: # через values дефолты чарта не убираются вообще никак. # # Helm : удалить дефолт можно ТОЛЬКО значением null; # {} он глубоко сливает с дефолтом, и дефолт остаётся; # kustomize : в strategic-merge-патче null означает УДАЛИТЬ КЛЮЧ, # в JSON6902 — нормализуется обратно в {}. # # То есть до Helm настоящий null не доходит ни одним путём. Поэтому ресурсы # вырезаются postRenderers'ом выше, уже из отрендеренного манифеста. 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