You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:15:38