如何使用 helm 进行日志记录

How to do logging with helm

有时我想在执行 helm 模板时记录一些东西。在 Java 中,这看起来像这样:

LOGGER.debbug("My value is {}", value);

有 Notes.txt,这在某些情况下可能会有所帮助。但是,如果我可以在模板的 右侧 位置添加用于调试目的的日志记录语句,那就太好了。

我不相信 Helm 有这样直接的东西:我认为没有办法在 helm install 执行时从模板向 stdout 写入任何东西。

您已经知道 NOTES.txt 文件。根据您要调试的内容,另一种选择是在输出中写入 YAML 注释:

metadata:
  # chart={{ .Chart.Name }} release={{ .Release.Name }}
  name: {{ include "mychart.fullname" . }}

Go 模板注释 {{/* ... */}} 将被模板解析器使用,但 Helm 并不真正了解 # ... YAML 注释,它们将与模板的其余部分一起输出。

如果这是一个新项目,我也会考虑编写一个 Go-based Kubernetes 运算符而不是 Helm 图表,如果您的安装逻辑非常复杂以至于将日志记录放在模板中听起来是个好主意。 Go 的语法不那么奇怪,比 Helm 更容易找到懂 Go 的人,而且通用的软件生态系统要丰富得多(例如,有几个相当标准的 Go 日志记录包)。