【问题标题】:How to pass dynamic data to helm subchart如何将动态数据传递给 helm 子图
【发布时间】:2020-12-22 06:26:01
【问题描述】:

我正在使用 mongodb 舵图和 mongo-express 舵图。 mongodb 根据我的发布名称生成名称,因此它是动态的。 mongodb 服务名称类似于 my-release-mongodb

mongo-express 需要通过mongodbServer - 可以到达mongodb 的位置。如果它是生成的并且可以根据版本名称更改,我如何将这个值提供给mongo-express

【问题讨论】:

  • 您可能需要编写某种脚本来获取mongodb 的服务名称,并且当您为mongo-express 运行helm install 时,请使用--set serviceName=<value_from_script>
  • 好的,我明白了。这不是一个常见的问题吗?

标签: kubernetes kubernetes-helm


【解决方案1】:

Helm 没有直接拥有这个能力。 (另见helm - programmatically override subchart values.yaml。)它有几种方法可以propagate configured values from a subchart to a parent,但不能使用计算值,或者将这些值发送到同级图表。

在由子图表创建的服务的特殊情况下,我通常将服务名称视为图表“API”的一部分:您知道服务将被命名为{{ .Release.Name }}-mongodb,您只需对其进行硬编码在消费图表中。

如果您是在单个“伞形”图表下启动它,这会更简单一些。这两个部分具有相同的发布名称,因此您可以以相同的方式构造服务名称。 (伞形图还有其他限制——如果你有多个服务,每个服务都应该有一个独立的 MongoDB 安装,Helm 只会为整个伞形图部署一次数据库——但你仍然可以在微服务之间进行 HTTP 调用时遇到同样的问题。)

如果它们是完全独立的安装,您可能需要自己选择版本名称并将其作为值传递。

helm install thedb ./mongodb
helm install theapp ./mongo-express --set serviceName=thedb-mongodb

这也是HelmfileHelmsman 等更高级别工具可以派上用场的地方,因为这可以让您在固定文件中指定这些参数。

【讨论】:

  • 谢谢!那讲得通。你能详细说明一下雨伞部分吗?正如您所说,我将所有内容都放在一个图表中,mongodbmongo-express 是该图表的直接依赖项。这对我有什么帮助?
  • .Release.Name 在父图表和所有子图表中都相同,因此您可以在客户端指定{{ .Release.Name }}-mongodb,而无需预先知道发布名称。
  • 好吧,是的。供参考,这是我在主题github.com/helm/helm/issues/2133中发现的问题
猜你喜欢
  • 1970-01-01
  • 2021-11-25
  • 2023-01-24
  • 2010-11-07
  • 1970-01-01
  • 2013-11-25
  • 2019-11-01
  • 2011-02-22
相关资源
最近更新 更多