如何在helm template 中debug

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/

你可能感兴趣的:(如何在helm template 中debug)