在没有 运行 主图表的情况下在 helm 中使用全局参数

Using global parameter in helm without running master chart

我有这样的 helm 图表结构:

-chart A- \
                   -chart A1
                   -chart A2
-chart B- \
                   -chart B1
                   -chart B2
-chart C-\
                   -chart C1
                   -chart C3

我需要的是一个全局参数或环境变量,我可以将其应用于 所有 个图表,而无需在所有图表之上设置主图表。

所以当我 运行 helm install 时,我不必使用 --set 将此参数传递给所有 "main" 图表(A、B、C)。

这可能吗?

您可以为 helm install 提供多个 --set-f 选项,因此最好的解决方案是将 "global" 设置写入文件并始终通过helm install-f global-settings.yaml 选项(以及您拥有的任何其他图表特定设置和值文件)。

如果您要安装的所有内容都在一个命名空间中,根据设置的实际作用,将它们放入共享的 ConfigMap 中可能会奏效。这管理起来有点棘手(您可能需要手动执行 运行 kubectl 命令),并且您可以使用 Helm 值执行许多使用共享 ConfigMap 无法执行的操作。但是,按照您在问题中建议的方式 "automatic" ;您根本不需要任何 Helm 选项即可使用它。

您可能需要考虑使用 xxx.yaml 文件来覆盖您的图表默认属性,并使用该环境变量为该文件创建模板。我认为这种方法比使用 --set cli 选项更易于维护。

另一种方法是使用 Landscaper, listed on the Helm documentation 之类的东西,以一种简单的方式为您的图表制作模板