如何维护多个平台的单个 Helm 图表模板?

问题描述 投票:0回答:1

我正在开发一个项目,需要为不同平台(例如 Google Marketplace、Azure Marketplace 和 Openshift)发布多个 Helm 图表。这些图表中的大多数都是互连和共享的。

我的目标是维护单个 Helm 图表/模板,并使用不同的值文件从此模板生成多个 Helm 图表。但是,与特定图表无关的选项必须对用户隐藏。

我尝试了几种解决方案,但遇到了问题:

  1. Golang 模板:我尝试使用 Golang 模板作为主图表。但是,Helm 图表模板语法与 Golang 模板语法相同。这导致 Golang 模板也处理 Helm 图表模板,这不是我想要的。

  2. ytt:我也尝试过

    ytt
    ,但它要求输入和输出是有效的 YAML 或基于
    ytt
    语法的模板。当 Helm 模板中有 Golang 模板语法元素时会崩溃。

我考虑过使用 Helm 子图和依赖项,但它们似乎不适合这个用例,因为它们是具有不同值的相同组件。

我将不胜感激任何解决此问题的建议或替代方法。

如何维护单个 Helm 图表模板并为不同平台生成多个图表?

kubernetes charts kubernetes-helm azure-marketplace ytt
1个回答
0
投票

看来仅 Helm 模板不足以实现您的目标。

您可以保留 Helm 模板以进行单集群部署。但是让PKL负责生成多个值文件。如果您编写一些 PKL 脚本来生成供应商的 YAML 并在 CI 上正确配置它以使用适当的默认值发布每个供应商的图表,则此方法应该有效。

您可能会对 PKL 持怀疑态度,因为它是新的。不过,苹果公司内部已经使用它很长时间了。有 Kubernetes 示例

© www.soinside.com 2019 - 2024. All rights reserved.