如何在Helm Deployment文件中用Values变量动态引用Vault数据路径?
Helm Chart动态引用Vault数据路径的正确语法
问题场景
你当前在Helm Chart的deployment.yml中有一段硬编码引用Vault数据的代码:
{{- with secret "my/path/kv/key" }} {{ .Data.data.key | indent 10 }} {{- end }}
希望通过Values文件配置动态的数据路径,支持.Data.data.key、.Data.key、.Data.data.mykey等不同形式,于是在Values中配置:
vault: data_path: .Data.data.key
尝试修改deployment.yml为:
{{- with secret "my/path/kv/key" }} {{ {{ .Values.vault.data_path }} | indent 10 }} {{- end }}
但这种嵌套模板语法无法生效,输出仍为原代码块,未完成解析。
正确解决方案
Helm不支持直接嵌套{{ }}语法解析变量,需要使用tpl函数将Values中的字符串路径当作模板片段渲染,同时传递当前上下文(即secret对象的上下文)。
修改后的deployment.yml代码:
{{- with secret "my/path/kv/key" }} {{ tpl (.Values.vault.data_path) . | indent 10 }} {{- end }}
说明
tpl函数的第一个参数是Values中配置的路径字符串,第二个参数.表示将当前with块内的上下文(也就是secret对象)传递给模板片段,这样就能正确解析.Data.data.key这类路径。- Values中的配置无需修改,保持原有形式即可,比如:
或者vault: data_path: .Data.keyvault: data_path: .Data.data.mykey
内容的提问来源于stack exchange,提问作者PatPanda
相关产品推荐
相关产品推荐

