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
相关产品推荐
相关产品推荐

