如何覆盖子图表的 Release.namespace?
How to override the Release.namespace for subcharts?
我有一个父图表,其中包含 4 个子图表,其中我想将 1 个特定子图表部署到不同的命名空间,并且该子图表中的所有模板文件都引用 {{ .Release.Namespace. }}
。他们有什么方法可以从父图表修改子图表的 .Release.Namespace.
吗?
我认为使用普通 Helm 和不受您控制的图表是不可能的。
当一个图表依赖于一个子图表时,几乎没有什么可以自定义的。父图表可以为子图表提供一组默认值,但不计算任何值,并且可以由人员覆盖这些值 运行 helm install
.
当且仅当子图专门编写为部署到备用命名空间中时
# Every object in the subchart must have this configuration
metadata:
namespace: {{ .Values.namespace | default .Release.Namespace }}
然后您可以将该值提供给子图;但这不是默认配置。
我的一般经验是,Helm“伞形图表”在几个重要方面是不灵活的。有更高级别的工具,如 Helmfile and Helmsman 提供了多个 Helm 图表的单命令安装和全套选项(Helmsman 更简单,Helmfile 允许 Helm 风格的模板几乎无处不在,这既更强大也更复杂).如果您需要安装四个图表,三个到一个命名空间,一个到另一个,这些工具可能会更好。
我有一个父图表,其中包含 4 个子图表,其中我想将 1 个特定子图表部署到不同的命名空间,并且该子图表中的所有模板文件都引用 {{ .Release.Namespace. }}
。他们有什么方法可以从父图表修改子图表的 .Release.Namespace.
吗?
我认为使用普通 Helm 和不受您控制的图表是不可能的。
当一个图表依赖于一个子图表时,几乎没有什么可以自定义的。父图表可以为子图表提供一组默认值,但不计算任何值,并且可以由人员覆盖这些值 运行 helm install
.
当且仅当子图专门编写为部署到备用命名空间中时
# Every object in the subchart must have this configuration
metadata:
namespace: {{ .Values.namespace | default .Release.Namespace }}
然后您可以将该值提供给子图;但这不是默认配置。
我的一般经验是,Helm“伞形图表”在几个重要方面是不灵活的。有更高级别的工具,如 Helmfile and Helmsman 提供了多个 Helm 图表的单命令安装和全套选项(Helmsman 更简单,Helmfile 允许 Helm 风格的模板几乎无处不在,这既更强大也更复杂).如果您需要安装四个图表,三个到一个命名空间,一个到另一个,这些工具可能会更好。