helm - 以编程方式覆盖子图表值.yaml

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

我正在编写一个使用stable/redis图表作为子图的舵图。

我需要覆盖我的图表中和redis图表中用于两个微服务的存储类名称。

我正在使用头盔2.12.3

我希望能够根据模板指定redis.master.persistence.storageClass,就像这样

storage:
  storageClasses:
    name: azurefile

redis:
  usePassword: false
  master:
    persistence:
      storageClass: {{ $.Values.storage.storageClasses.name }}

除了,据我所知,values.yaml不支持模板

由于这是一个公共图表,我无法修改它以依赖于the documentation中所述的全局值

我考虑在我的图表中使用{{ $.Values.redis.master.persistence.storageClass }}而不是{{ $.Values.storage.storageClasses.name }},但这会:

  • 不要隐藏我的图表的依赖性的复杂性
  • 如果我要添加另一个子图依赖项,则不扩展

在我的values.yaml文件中,我有:

storage:
  storageClasses:
    name: azurefile

redis:
  master:
    persistence:
      storageClass: azurefile

我想在values.yaml中指定一个可以在图表部署时覆盖的值。

例如像这样

helm install --set storage.storageClasses.name=foo mychart

而不是

helm install --set storage.storageClasses.name=foo --set redis.master.persistence.storageClass mychart
kubernetes-helm
1个回答
0
投票

正如您所正确提到的,helm值文件是纯yaml文件,不能包含任何模板。对于您的用例,您还需要为值文件使用模板系统,这基本上意味着您还可以随时生成值文件。我建议你去看看helmfile。这使您可以跨多个图表和应用程序环境共享值文件。

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