【发布时间】:2020-04-21 04:19:01
【问题描述】:
我正在使用 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
...
我发现几个问题都有类似的错误,但答案通常只是要求阅读图表代码。我有一个大图表,需要自己调试这个错误。并且猜测它抱怨哪一行似乎没有意义。
有没有办法知道配置中到底出了什么问题?
【问题讨论】:
-
我遇到了这个问题。我没有解决方案,但有建议。我通过将模板恢复到我知道它可以工作的状态来解决它,然后慢慢地引入更多模板,直到它达到崩溃的程度。通过这样做,我能够确定 10 条麻烦的线。在这些行中有一个已重命名的变量,因此未定义。
-
这是一个很好的问题。 Helm 的
--debug标志似乎更针对 Helm 开发人员调试 Helm 代码,而不是用户试图找出他们的图表的问题,正如@foxyblue 所描述的那样,使用试错法会很耗时。需要一种方法来查看无法转换为 JSON 的中间 YAML.... -
我正在尝试的东西:一个模板,用于检查是否设置了已知的所需变量列表,以便快速明确失败,而不是在引用未设置值时有时会发生的晦涩难懂的失败.
{{- define "assertions" -}} {{- range $key := (list "varName1" "varName2" "etc" ) }} {{- $ERRMSG := printf "ERROR: Missing required value for: .Values.%s" $key }} {{- $nop := required $ERRMSG (index $ $key) }} {{- end }} {{- end -}}在每个template.yaml文件的顶部使用:{{- template "assertions" .Values -}} -
这是由于你的帮助文件的缩进问题。
标签: yaml kubernetes-helm microk8s