如何覆盖子图的 Release.namespace?

3br*_*032 4 kubernetes kubernetes-helm

我有一个父图表,其中包含 4 个子图表,其中我想将 1 个特定子图表部署到不同的命名空间,并且该子图表中的所有模板文件都引用{{ .Release.Namespace. }}. 他们有什么方法可以修改.Release.Namespace.父图表中的子图表吗?

Dav*_*aze 8

我不相信使用普通的 Helm 和你无法控制的图表是可能的。

当图表依赖于子图表时,可以自定义的内容相当少。父图表可以为子图表提供一组默认值,但不会进行任何计算,并且这些值可以由运行的人覆盖helm install

当且仅当子图专门编写为部署到备用命名空间中

# Every object in the subchart must have this configuration
metadata:
  namespace: {{ .Values.namespace | default .Release.Namespace }}
Run Code Online (Sandbox Code Playgroud)

然后您可以将该值提供给子图;但这不是默认配置。

我的一般经验是 Helm“伞形图表”在几个重要方面不灵活。还有一些更高级别的工具,例如HelmfileHelmsman,它们提供了多个 Helm 图表的单命令安装以及全套选项(Helmsman 更简单,Helmfile 几乎允许在任何地方使用 Helm 样式模板,既更强大,也更复杂)。如果您需要安装四个图表,三个图表安装到一个命名空间,一个安装到另一个命名空间,这些工具可能会更好。