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

如何在Helm Chart YAML中复用_helper.tpl函数并转换大小写?

解决Helm Chart复用模板函数并转换大小写的问题

要实现复用自定义模板函数的输出并转换为大写/小写,核心是用Helm的include函数替代template函数。template是直接输出内容的模板动作,无法作为函数参数或管道操作对象;而include会返回模板渲染后的字符串结果,能和upper/lower这类字符串处理函数配合使用。

修正后的实现步骤

  1. 保留原_helper.tpl模板定义(注:原代码中$hostnameparts为字符串,join "-"会按字符拆分拼接,若需处理数组可改为$hostnameparts := list "host" "name",此处保持原代码不变):
{{- define "hostnameparts.name" -}}
  {{$hostnameparts := "hostname" -}}
  {{- $joinedHostname := join "-" $hostnameparts  -}}
  {{- printf "%s" $joinedHostname -}}
{{- end -}}
  1. 修改Deployment.yaml的引用写法:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "hostnameparts.name" . }}
  labels:
    host.upper: {{ include "hostnameparts.name" . | upper }}
    host.lower: {{ include "hostnameparts.name" . | lower }}

原写法报错原因

  • {{ upper template "hostnameparts.name" . }}:语法错误,template是模板动作,不能作为upper函数的参数。
  • {{ template "hostnameparts.name" . | upper }}:template直接输出内容,无法通过管道将结果传递给upper函数,导致解析失败。

验证效果

执行helm template .后,输出的Deployment元数据示例:

metadata:
  name: h-o-s-t-n-a-m-e
  labels:
    host.upper: H-O-S-T-N-A-M-E
    host.lower: h-o-s-t-n-a-m-e

内容的提问来源于stack exchange,提问作者Marcel van Heemst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:04:57