如何将Helm printf输出作为Jinja表达式求值以引用证书密钥
问题解决:Helm模板中动态引用values.yaml中的证书和密钥
你当前的Helm模板通过printf生成了键名字符串,但Helm不会自动把这个字符串解析为values的引用路径,所以输出的只是字面字符串而非实际值。要实现动态取值,得用Helm模板的index函数来访问嵌套的values数据。
修改后的模板代码
{{- $root := . -}} {{ range $k, $v := until (int ($root.Values.data.nodeCount) ) }} apiVersion: v1 kind: Secret metadata: name: {{ $root.Values.clusterName }}-nodes-{{$k}}-secret type: Opaque data: crt: {{ index $root.Values.data (printf "node_%d_crt" $k) }} key: {{ index $root.Values.data (printf "node_%d_key" $k) }} --- {{- end }}
代码说明
index函数的作用是从对象中通过键名取值,第一个参数是要访问的对象(这里是$root.Values.data),第二个参数是动态生成的键名(通过printf拼接出node_0_crt这类格式的键)。- 这样就能根据循环的
$k值,动态获取values.yaml中对应节点的证书和密钥内容。
正确输出结果
--- apiVersion: v1 kind: Secret metadata: name: test-nodes-0-secret type: Opaque data: crt: test key: test --- apiVersion: v1 kind: Secret metadata: name: test-nodes-1-secret type: Opaque data: crt: test1 key: test1
内容的提问来源于stack exchange,提问作者vicky
相关产品推荐
相关产品推荐

