假设您需要部署一个带有大量值的公共Helm图表(如Jenkins/Jenkins)。我想在多个文件中写入这些值,并在这些值文件中使用go模板。然后我想把它们组合在一起并部署它们。有没有一种方法可以编写一个Meta级别的Helm图表,将值创建为清单,然后根据这些值安装一个子图表?
我知道kustomize,helmfile,和子图表。我想没有一个是我想要的(或者我没有正确地使用它们)。Kustomize不支持go模板。Helmfile适合于组合和选择值,但不一定要模板化这些值文件(也许它确实如此)。如果我要的是复制品就告诉我。
3条答案
按热度按时间mefy6pfw1#
Helmfile至少允许Helm样式的模板,在它的Helmfile和单独的values文件中。
假设您有一些图表,它需要知道它安装在哪个集群中以进行监视。通常你会将其作为Helm值传递,但你希望将其写下来(并且是可脚本的,并且能够同时将相同的配置传递到多个图表中)。在Helmfile中,你可以这样写:
字符串
最后一个块应该类似于
helm install
参数,但其中有两点魔力。{{ .Values.cluster }}
是一个Go语言的text/template
块,几乎就像你在Helm chart中所做的一样(确切的模板函数有点不同)。或者,如果引用*.gotmpl
文件,Helmfile会在将该文件作为输入提供给helm之前运行模板引擎。型
就像普通的 Helm 一样,模板化也可能会太过火。它也可能有点令人困惑,因为访问未定义的属性通常是一个错误,而不是
nil
,并且helmfile.yaml
会被渲染多次(在大多数情况下,如果你定义一个每个环境的值,它 * 必须 * 在每个环境中定义)。但是,这确实为您提供了一种非常通用的方法来提供每个图表的设置,或者定义一个在不同环境中几乎但不完全相同的图表设置。nzrxty8p2#
看起来helm已经使用values/子目录http://www.github.com/helm/helm/pull/6876开发了这个特性
g6baxovj3#
**我有和你一样的问题。这让我很困扰,因为至少在我看来,这是一个真实的的需要。
我最初是用mvn,复制资源和一个mustache插件做的,对于大多数情况来说,这是可以的。但现在我有限制,因为我需要使用的功能/代码在我的模板。等等,赫尔姆不是已经能做到这些了吗???
"所以让我们用舵为模板“
这将给予这样的组织:
字符串
因此,在调用构建系统时:
优点/缺点