--- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: measurements resources: - ../base patches: - target: {kind: HelmRelease, name: measurements} patch: | # Имя сервиса приводим к measurements-service, как в brusnika-*. # # В base сервис называется measurements-svc, а django ходит на # MEASUREMENTS_HOST=http://measurements-service.measurements.svc.cluster.local:8000/api # (apps/django/base/backend.yaml). Переименовать сервис дешевле, чем # патчить переменную в двух релизах django (backend и celery), и заодно # совпадает с тем, как это сделано в остальных кластерах. - op: replace path: /spec/values/services/backend/service/name/_default value: measurements-service # S3: бакет берём из секрета, а не из шаблона. # # В base имя бакета ЗАШИТО прямо в vault-шаблоне — "buckets":["measurements"]. # Из-за этого measurements складывал файлы в собственный бакет, тогда как # медиахранилище контура одно и называется sarex-media-storage: туда пишет # django (S3_BUCKET) и оттуда же раздаёт s3-proxy на маршруте /media/. # Разные бакеты означали, что ссылка на файл измерения, отданная через # django, вела бы в пустоту. # # Endpoint в base уже приезжает из секрета (.Data.data.client.endpoint) — # достраиваем до той же схемы и бакет, чтобы имя задавалось в ОДНОМ месте # (vault_app_secrets в aero/roles/sarex_stack/defaults/main.yml), а не # дублировалось в манифесте. Заменить можно только аннотацию целиком: # значение зашито внутри шаблона, через values его не перекрыть. - op: replace path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-measurements-s3 value: |- {{- with secret "secrets/data/minio/apps/measurements" -}} S3_JSON_SETTINGS='{"host":"{{ index .Data.data.client "endpoint" }}","login":"{{ index .Data.data "access_key" }}","password":"{{ index .Data.data "secret_key" }}","verify":false,"buckets":["{{ index .Data.data "bucket" }}"]}' {{- end -}}