17

我正在使用 Helm 3 和 microk8s。当我尝试空运行时:

microk8s.helm install <...> --dry-run --debug

我看到像这样的错误

Error: YAML parse error on ./templates/deployment.yaml: error converting YAML to JSON: yaml: mapping values are not allowed in this context
helm.go:76: [debug] error converting YAML to JSON: yaml: mapping values are not allowed in this context
YAML parse error on ./templates/deployment.yaml
helm.sh/helm/v3/pkg/releaseutil.(*manifestFile).sort
    /home/circleci/helm.sh/helm/pkg/releaseutil/manifest_sorter.go:129
helm.sh/helm/v3/pkg/releaseutil.SortManifests
    /home/circleci/helm.sh/helm/pkg/releaseutil/manifest_sorter.go:98
helm.sh/helm/v3/pkg/action.(*Configuration).renderResources
    /home/circleci/helm.sh/helm/pkg/action/install.go:455
helm.sh/helm/v3/pkg/action.(*Install).Run
    /home/circleci/helm.sh/helm/pkg/action/install.go:214
main.runInstall
...

我发现了几个有类似错误的问题,但答案通常只是要求阅读图表代码。我有一个大图表,需要自己调试这个错误。并且猜测它抱怨哪条线似乎没有意义。

有没有办法知道配置中到底出了什么问题?

4

1 回答 1

1

尝试:helm template ... --debug > foo.yaml

这会将渲染的图表输出到 foo.yaml(并将 helm 错误堆栈跟踪输出到 stderr)。然后从 helm 错误中找到有问题的模板文件名,并在渲染的图表中查看类似# Source: the-template-name.yaml. YAML 到 JSON 的转换是针对每个 YAML 对象单独完成的,因此您可能有多个相同的# Source: the-template-name.yaml.

查看每个注释下方的n# Source: ...行是否有错误,其中n是 Helm 渲染报告的错误的行号。

于 2021-05-04T13:36:56.373 回答