掌舵继承变量值

时间:2020-03-07 10:35:19

标签: kubernetes kubernetes-helm go-templates

请考虑此values.yaml文件和secrets.yaml文件。 有什么方法可以读取prometheus.promethesSpec.thanos.objectStorageConfig.name
将变量thanosObjectStoreConfig的数据(上述dict的值)传递给secrets.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

secrets.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 个答案:

答案 0 :(得分:2)

最简单的方法是完全避免该问题。在helm installhelm upgrade图表中,可以提供任意数量的-f选项来指定其他YAML值文件。您可以将特定的存储配置(thanosObjectStoreConfig顶级密钥下的内容)放在一个单独的文件中,该文件具有固定的顶级密钥,而helm install -f则在不同的环境中具有不同的文件。< / p>

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

如果您真的想基于某个键进行切换,那么Go text/template核心语言将包含一个index函数,该函数可以进行动态查找:

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