使用Skaffold+Helm部署K8s服务时YAML解析错误求助
问题排查与修复:Helm部署YAML解析错误
针对你遇到的YAML parse error,核心问题集中在YAML语法规范和变量引用不匹配两个方面,具体排查和修复如下:
问题点分析
YAML注释格式非法
YAML规范仅支持#作为注释符号,你的values.yaml中使用了//注释,这会直接导致YAML解析失败。变量引用路径错误
deploymentSomintec.yaml中name字段引用的{{ .Values.global.service_name}},实际在values.yaml里的路径是.Values.service.global.service_name,缺失了service层级。- 部署文件中引用的
{{ .Values.service.service_app_port }}、{{ .Values.service.service_debug_port }},与values.yaml里的实际变量名somintec_app_port、somintec_debug_port不匹配。
修正后的文件
修正后的values.yaml
service: global: service_name: service imageservice: name: "name" # this value will be override from skaffold file tag: "tag" # this value will be override from skaffold file somintec_app_port: 3002 somintec_debug_port: 9228
修正后的deploymentSomintec.yaml
{{- if or (eq .Values.type "service") (eq .Values.type "local-dev-with-tests") }} apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-service-test-runner spec: replicas: 1 selector: matchLabels: app: {{ .Release.Name }}-service-test-runner template: metadata: labels: app: {{ .Release.Name }}-service-test-runner spec: containers: - name: {{ .Values.service.global.service_name}}-service-test image: {{ .Values.service.imageservice.name }}:{{ .Values.service.imageservice.tag }} ports: - containerPort: {{ .Values.service.somintec_app_port }} - containerPort: {{ .Values.service.somintec_debug_port }} {{ end }}
验证方法
修复后可以先执行helm template .命令渲染模板,检查输出的YAML是否合法,确认无语法错误后再进行部署。
内容的提问来源于stack exchange,提问作者Arun kumar
相关产品推荐
相关产品推荐

