我想拦截helm YAML并使用Python脚本对其进行自定义,然后安装它。我一直在做类似
helm template | python3 script... | kubectl apply -f -
的事情,但当然这不会在我的集群中创建 helm 版本,所以我失去了 helm rollback
等。
我考虑过使用 Kustomize,但它没有我想要的功能。
有没有办法获取预先生成的 YAML,例如来自
helm template
或 helm install --dry-run
的 YAML,然后使用 helm 安装/升级该 YAML?
参见
https://helm.sh/docs/topics/advanced/#post-rendering
后渲染器可以是接受 STDIN 上渲染的 Kubernetes 清单并在 STDOUT 上返回有效 Kubernetes 清单的任何可执行文件。如果发生故障,它应该返回非 0 退出代码。这是两个组件之间唯一的“API”。它为您在渲染后过程中可以执行的操作提供了极大的灵活性。我自己还没有使用过它,但如果你想运行自己的替代方案 kustomize,它看起来很有趣。后期渲染器可与安装、升级和模板一起使用。要使用后渲染器,请使用 --post-renderer 标志以及您要使用的渲染器可执行文件的路径:
$ helm install mychart stable/wordpress --post-renderer ./path/to/executable
有关非 kustomize 的示例,请参阅
https://github.com/vmware-tanzu/carvel-ytt/tree/develop/examples/helm-ytt-post-renderer。