如何在Helm values.yml中引用现有变量?安装WordPress Chart遇端口错误
解决Helm Chart中NetworkPolicy端口变量引用的安装错误
问题原因
你遇到的错误是因为NetworkPolicy的port字段被渲染成了带换行的字符串类型,而Kubernetes要求该字段如果是数字端口号,必须是整数类型,且不能包含无效字符(比如换行)。
原写法里用单引号包裹模板变量'{{ .Values.containerPorts.http }}',会让Helm将渲染后的结果以字符串形式输出,同时可能因为YAML格式或注释的影响,导致输出内容带有换行符(错误信息里的"8\n080"就是明证),最终触发Kubernetes的校验错误。
正确写法
直接使用模板变量,去掉多余的单引号,让Helm渲染出整数类型的端口值:
containerPorts: http: 8080 https: 8443 networkPolicy: enabled: true ingress: enabled: true ingressRules: customRules: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kube-system podSelector: matchLabels: app: ingress-appgw ports: - protocol: TCP port: {{ .Values.containerPorts.http }} # 去掉单引号,直接引用变量
如果需要兼容后续可能出现的字符串类型端口名(比如自定义端口名称而非数字),可以用int函数强制转换为整数(确保数字端口的类型正确):
port: {{ int .Values.containerPorts.http }}
验证方法
修改values.yml后,先通过Helm模板渲染命令验证输出是否正确:
helm template your-release-name ./your-chart-dir -f values.yml | grep -A5 -B5 "port:"
如果输出的port字段是8080(无引号、无换行),说明渲染正确,此时再执行helm install即可成功部署。
内容的提问来源于stack exchange,提问作者Mohamed
相关产品推荐
相关产品推荐

