将 YAML 转换为 JSON 时出错:yaml:第 15 行:未找到预期的字母或数字字符
Error converting YAML to JSON: yaml: line 15: did not find expected alphabetic or numeric character
我想为我的项目设置通配符子域,使用 k8s、nginx ingress controller、helm chart:
在 ingress.yaml
文件中:
...
rules:
- host: {{ .Values.ingress.host }}
...
在 values.yaml
文件中,我将主机 example.local
更改为 *.example.local
:
...
ingress:
enabled: true
host: "*.example.local"
...
然后,当我使用 helm chart 安装 chart 时:
Error: YAML parse error on example/templates/ingress.yaml: error converting YAML to JSON: yaml: line 15: did not find expected alphabetic or numeric character
我该如何解决?
感谢您的支持。
在您的 ingress.yaml
中将主机密钥用引号引起来。
host: "{{ .Values.ingress.host }}"
入口:
启用:真
主持人:“*。example.local”
您可能需要使用“---”而不是
YAML 以特殊方式处理以星号开头的字符串——这就是为什么带有通配符 *.example.local
的主机名会破坏 helm install
上的入口。
为了被识别为字符串,ingress.yaml
文件中的值应该用 " "
个字符引用:
...
rules:
- host: "{{ .Values.ingress.host }}"
...
这里还有一个选项 - 添加 | quote
:
...
rules:
- host: {{ .Values.ingress.host | quote }}
...
我已经重现了你的问题,这两个选项都工作正常。有关为 YAML 引用特殊字符的更多信息,请参见 here.
我想为我的项目设置通配符子域,使用 k8s、nginx ingress controller、helm chart:
在 ingress.yaml
文件中:
...
rules:
- host: {{ .Values.ingress.host }}
...
在 values.yaml
文件中,我将主机 example.local
更改为 *.example.local
:
...
ingress:
enabled: true
host: "*.example.local"
...
然后,当我使用 helm chart 安装 chart 时:
Error: YAML parse error on example/templates/ingress.yaml: error converting YAML to JSON: yaml: line 15: did not find expected alphabetic or numeric character
我该如何解决?
感谢您的支持。
在您的 ingress.yaml
中将主机密钥用引号引起来。
host: "{{ .Values.ingress.host }}"
入口: 启用:真 主持人:“*。example.local”
您可能需要使用“---”而不是
YAML 以特殊方式处理以星号开头的字符串——这就是为什么带有通配符 *.example.local
的主机名会破坏 helm install
上的入口。
为了被识别为字符串,ingress.yaml
文件中的值应该用 " "
个字符引用:
...
rules:
- host: "{{ .Values.ingress.host }}"
...
这里还有一个选项 - 添加 | quote
:
...
rules:
- host: {{ .Values.ingress.host | quote }}
...
我已经重现了你的问题,这两个选项都工作正常。有关为 YAML 引用特殊字符的更多信息,请参见 here.