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

如何在Helm的_helpers.tpl中调用已有helper函数创建新函数

首先明确几个基础问题的答案:

  • 同一个_helpers.tpl文件完全支持定义多个函数,这是Helm模板的标准用法,没有问题。
  • 支持在同文件的其他函数中调用已定义的helper函数,你的思路是正确的,只是写法有几处语法错误导致运行失败。

你代码中的错误点如下:

  1. 空白控制符语法错误:{{ - 中大括号和减号之间不能有空格,必须写成{{-,否则模板无法正常识别空白控制逻辑。
  2. include调用缺失上下文参数:调用redis.fullname模板时必须传递当前上下文.,否则该模板无法获取.Release、.Values等全局变量。
  3. 变量名拼写错误:获取端口的变量应该是.Values.port,你少写了末尾的s,写成了.Value.port。
  4. 函数参数优先级问题:需要用括号把include的完整调用包裹起来,才能将其返回值作为printf的第一个入参,避免模板解析器把后续的端口参数识别为include的入参。

修正后的完整_helpers.tpl代码如下:

{{- define "redis.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 30 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 30 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}

{{- define "redis.connection_string" -}}
{{- printf "redis://%s:%s/" (include "redis.fullname" .) .Values.port -}}
{{- end -}}

后续你在其他模板文件中使用{{ include "redis.connection_string" . }}即可正常获取生成的Redis连接字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:08