我正在开发一个项目,需要为不同平台(例如 Google Marketplace、Azure Marketplace 和 Openshift)发布多个 Helm 图表。这些图表中的大多数都是互连和共享的。
我的目标是维护单个 Helm 图表/模板,并使用不同的值文件从此模板生成多个 Helm 图表。但是,与特定图表无关的选项必须对用户隐藏。
我尝试了几种解决方案,但遇到了问题:
Golang 模板:我尝试使用 Golang 模板作为主图表。但是,Helm 图表模板语法与 Golang 模板语法相同。这导致 Golang 模板也处理 Helm 图表模板,这不是我想要的。
ytt:我也尝试过
ytt
,但它要求输入和输出是有效的 YAML 或基于 ytt
语法的模板。当 Helm 模板中有 Golang 模板语法元素时会崩溃。
我考虑过使用 Helm 子图和依赖项,但它们似乎不适合这个用例,因为它们是具有不同值的相同组件。
我将不胜感激任何解决此问题的建议或替代方法。
如何维护单个 Helm 图表模板并为不同平台生成多个图表?
看来仅 Helm 模板不足以实现您的目标。
您可以保留 Helm 模板以进行单集群部署。但是让PKL负责生成多个值文件。如果您编写一些 PKL 脚本来生成供应商的 YAML 并在 CI 上正确配置它以使用适当的默认值发布每个供应商的图表,则此方法应该有效。
您可能会对 PKL 持怀疑态度,因为它是新的。不过,苹果公司内部已经使用它很长时间了。有 Kubernetes 示例。