请考虑此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 }}
答案 0 :(得分:2)
最简单的方法是完全避免该问题。在helm install
或helm 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 }}