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

Helm通用模板函数如何在未知参数名时访问值?

解决Helm通用模板函数的上下文问题

你的问题核心是函数调用时传入的上下文丢失了全局.对象:当你用include "function" .Values.name时,函数内部的.就是.Values.name的值(比如字符串),自然找不到.Values.enableTpl字段。要解决这个问题,你需要同时传递要处理的值和全局上下文,再针对不同类型做适配。

修正后的模板函数

{{- define "tplHelper" -}}
  {{- /* 从传入的字典中获取要处理的值和全局上下文 */ -}}
  {{- $value := .value -}}
  {{- $context := .context -}}
  
  {{- if and $context.Values.enableTpl (kindIs "string" $value) -}}
    {{- /* 仅对字符串类型执行tpl解析 */ -}}
    {{ tpl $value $context }}
  {{- else -}}
    {{- /* 非字符串或不启用模板时直接返回原值 */ -}}
    {{- $value -}}
  {{- end -}}
{{- end -}}

使用方式

调用时通过dict把要处理的值和全局上下文一起传入:

{{ include "tplHelper" (dict "value" .Values.name "context" .) }}

关键说明

  • 传递上下文:用dict封装要处理的value和全局context,确保函数能访问到.Values.enableTpl配置。
  • 类型判断:用kindIs "string"检查值类型,避免对列表、字典等非字符串类型执行tpl(tpl仅支持字符串模板)。
  • 通用性:不管传入的是字符串、列表还是其他类型,都能正确处理——启用模板时解析字符串,否则直接返回原值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:50:55