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

Helm中如何获取含连字符的嵌套YAML键值以提取端口?

问题解决:Helm模板中提取带连字符的Values字段值

错误原因

模板里用 .Values.my-app.ports.http 访问配置时,my-app 包含连字符(-),而Go模板的点语法要求键名必须是合法标识符(不能包含连字符),因此触发了解析错误。

两种解决方案

方案1:用括号+引号访问带特殊字符的键

直接修改模板中的字段引用方式,用方括号包裹带连字符的键名即可:

apiVersion: v1
kind: Service
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  selector:
    app: my-app
  ports:
    - name: http
      port: {{ .Values["my-app"].ports.http | int }}
      targetPort: {{ .Values["my-app"].ports.http | int }}
  type: ClusterIP

方案2:修改values.yml中的键名(推荐)

如果允许调整配置结构,把带连字符的键名改成合法标识符格式(比如驼峰myApp或下划线my_app):
修改后的values.yml:

myApp:
  ports:
    http: 8000

或者:

my_app:
  ports:
    http: 8000

对应模板中的引用改为:

port: {{ .Values.myApp.ports.http | int }}
# 或者
port: {{ .Values.my_app.ports.http | int }}

验证

修改完成后重新执行Helm安装/升级命令,即可正常解析配置并生成正确的Service资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:12:37