helm template --debug

在本地进行 chart template 文件的渲染测试

helm install --dry-run --debug

当YAML 文件render 失败,则能够将失败的局部正文掉,而后从新用helm install --dry-run --debug 则正文局部也会被render 进去,就能够看看输入是什么,为什么会失败.

这个是因为 helm template engine 其实不能辨认YAML的正文语法,所以template engine 会持续render {{ }} 的内容。
又因为正文掉了render 进去问题的内容,所以不好被YAML 语法校验出错。

apiVersion: v2# some: problem section# {{ .Values.foo | quote }}-----------# 正文局部被render 进去了apiVersion: v2# some: problem section#  "bar"

fail function

fail function 会在执行render 时将谬误的内容打印出console 中

{{- fail (toYaml $.Values) }}#   ==> "key1: val1#        key2: val2#        ...."

能够用工夫来进行排序debug

{{- range (list "val1" "val2") }}  {{- $_ := set $.Values.global (toString now) (toYaml .) }}{{- end }}{{ fail (toYaml $.Values.global) }}#   ==> "2020-12-12 19:52:10.750813319 +0300 MSK m=+0.202723745: |#          val1#        2020-12-12 19:52:10.750883773 +0300 MSK m=+0.202794200: |#          val2"

或者将谬误的内容先长期存起来再打印进去

{{- $_ := set $.Values.global "value1" $val1 }}{{- $_ := set $.Values.global "value2" $val2 }}{{ fail (toYaml $.Values.global) }}#   ==> "value1: val1#        value2: val2"

References

https://blog.palark.com/advanced-helm-templating/
https://helm.sh/docs/chart_template_guide/debugging/