Хелм, наследующий значение переменной - PullRequest
0 голосов
/ 07 марта 2020

рассмотрите этот файл values.yaml и secrets.yaml fle. Есть ли способ прочитать prometheus.promethesSpec.thanos.objectStorageConfig.name и
передать данные переменной thanosObjectStoreConfig (которая является значением выше dict) в secretts.yaml?

values.yaml

prometheus:
  prometheusSpec:
    thanos:
      image: thanosio/thanos:v0.11.0
      objectStorageConfig:
        name: thanosObjectStoreConfig
        key: storage

# Defining storage configs for thanos
thanosObjectStoreConfig:
  type: AZURE
  config:
    storage_account: "xxxxxxx"
    storage_account_key: "xxxxxxxxx"
    container: "prometheus"
    endpoint: "blob.core.windows.net"
    max_retries: 0

sects.yaml

{{- if .Values.prometheus.prometheusSpec.thanos }}
---
apiVersion: v1
kind: Secret
metadata:
  name: thanos-object-store-config
type: Opaque
data:
  storage: < should contain values of `thanosObjectStorageConfig` | b64enc >
  # Tried not working as expected
  # storage: {{ tpl .Values.prometheus.prometheusSpec.thanos.objectStorageConfig.name $ }}
{{ end }}

1 Ответ

2 голосов
/ 07 марта 2020

Самый простой подход - полностью избежать проблемы. Когда вы helm install или helm upgrade диаграммы, вы можете указать любое количество опций -f для указания дополнительных файлов значений YAML. Вы можете поместить указанную c конфигурацию хранилища (то, что у вас есть под ключом верхнего уровня thanosObjectStoreConfig) в отдельный файл с фиксированным ключом верхнего уровня и helm install -f с разными файлами в разных средах.

helm install -f values-production.yaml ...

Если вы действительно хотите переключить это на основе ключа, базовый Go текст / шаблон язык включает в себя функцию index, которая может выполнять динамический c поиск:

{{- $key := .Values.prometheus.prometheusSpec.thanos.objectStorageConfig.name }}
data:
  storage: {{ index .Values $key | toYaml | b64enc }}
...