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

Helm图表中如何将Values值注入files目录文件并在ConfigMap中渲染生效?

Helm图表中如何将Values值注入files目录文件并在ConfigMap中渲染生效?

我来帮你搞定这个问题!你遇到的情况其实挺典型的——直接用.Files.Get读取files目录下的文件时,Helm只会原封不动地把内容读出来,不会自动解析里面的模板语法,所以才会出现{{ .Values.someValue }}没被替换成42的情况。

要解决这个问题,关键是让Helm把files里的文件当成模板来渲染,这里可以用Helm的tpl函数来实现。具体修改你的configMap.yaml即可:

修改前的代码里,你是直接读取文件内容后加引号:

{{ base $path }}: {{ $root.Files.Get $path | quote }} 

把它改成用tpl函数先渲染内容,再处理:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  namespace: my
data:
  {{- $root := . }} 
  {{- range $path, $bytes := .Files.Glob "files/*" }} 
  {{ base $path }}: {{ tpl ($root.Files.Get $path) $root | quote }} 
  {{- end }}

简单解释下这个修改:

  • tpl函数的作用就是把第一个参数(也就是我们读取到的文件内容)当成Helm模板,用第二个参数(这里的$root,也就是整个Chart的上下文,包含了Values、Release等所有可用变量)去渲染它。
  • 渲染完成后再用quote把内容转成适合ConfigMap的字符串格式。

这样当你执行helm install时,files/app.yml里的{{ .Values.someValue }}就会被正确替换成42,最终生成的ConfigMap内容就是你想要的:

some:
  value: 42

另外要注意两个小细节:

  • 确保files目录下的文件内容是合法的Helm模板语法,不然渲染过程可能会报错。
  • tpl函数是Helm 2.10版本之后才支持的,如果你的Helm版本太旧,可能需要先升级到新版本。

备注:内容来源于stack exchange,提问作者atygaev.mi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:28:02