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

如何在Helm模板中嵌套Vault注解模板并解析Values变量?

解决Helm与Vault模板嵌套时变量解析问题

问题核心是Helm和Vault都使用{{ }}作为模板语法标记,直接嵌套会导致Helm无法正确区分自身模板与需要传递给Vault的模板内容,所以{{ .Values.path }}被原样输出。

正确的做法是转义Vault模板的{{ }},让Helm优先解析自身的Values变量,再输出完整的Vault模板:

方法一:直接转义模板标签

vault.hashicorp.com/agent-inject-template-.env: |
  {{ "{{- with secret (print \"" }}{{ .Values.path }}{{ "\") -}}{{- range $k, $v := .Data.data -}}" }}
  {{ "{{ $k }}={{ $v }}" }}
  {{ "{{ end }}{{- end -}}" }}

方法二:使用Helm printf函数拼接(更简洁)

vault.hashicorp.com/agent-inject-template-.env: |
  {{ printf "{{- with secret (print \"%s\") -}}{{- range $k, $v := .Data.data -}}" .Values.path }}
  {{ "{{ $k }}={{ $v }}" }}
  {{ "{{ end }}{{- end -}}" }}

原理说明

  • 用{{ "{{" }}和{{ "}}" }}告诉Helm:这部分内容不需要解析,直接输出为{{和}}
  • Helm会先解析{{ .Values.path }}替换为配置中的实际路径,再将整个模板内容输出给Vault使用
  • 最终渲染后的YAML注解内容,就是Vault能够正确识别的模板,其中路径已替换为Helm Values中的值

内容的提问来源于stack exchange,提问作者Murakami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:40:44