将 YAML 转换为 JSON 时出错:yaml:第 15 行:未找到预期的字母或数字字符

问题描述 投票:0回答:3

我想为我的项目设置通配符子域,使用k8s,nginx入口控制器,helm图表:

ingress.yaml
文件中:

...
rules:
  - host: {{ .Values.ingress.host }}
...

values.yaml
文件中,我将主机
example.local
更改为
*.example.local
:

...
ingress:
  enabled: true
  host: "*.example.local"
...

然后,当我使用 Helm 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

我该如何修复它?

感谢您的支持。

kubernetes kubernetes-helm wildcard nginx-ingress
3个回答
25
投票

YAML 以特殊方式处理以星号开头的字符串 - 这就是为什么带有

*.example.local
等通配符的主机名会破坏
helm install
上的入口。 为了被识别为字符串,
ingress.yaml
文件中的值应该用
" "
字符引起来:

...
rules:
  - host: "{{ .Values.ingress.host }}"
...

这里还有一个选项 - 添加

| quote
:

...
rules:
  - host: {{ .Values.ingress.host | quote }}
...

我已经重现了您的问题,这两个选项都工作正常。有关在 YAML 中引用特殊字符的更多信息,请参阅此处


3
投票

在您的

ingress.yaml
中将主机密钥加上引号。

host: "{{ .Values.ingress.host }}"

0
投票

入口: 启用:真 主机:“*.example.local”

您可能需要使用“---”而不是

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.