Helm 2.x - 使用子图作为模板

Helm 2.x - use subchart as template

根据 requirements.yaml 的子图表导致呈现模板。我知道我可以使用别名来拥有子图的多个副本,但是有没有一种方法可以防止子图默认呈现,而不是 included 作为模板,沿着:

{{- $root := . }}

{{- range $i, $service := .Values.services }}
---
{{ $k8sDeployment := (include "MY_SUBCHART_NAME" (dict "top" $root "deployment" $service)) | fromYaml }}
{{ include "deployment"  (dict "top" $root "deployment" $k8sDeployment) }}
---
{{ $k8sService := (include "MY_SUBCHART_NAME2" $service) | fromYaml }}
{{ include "service" (dict "top" $root "service" $k8sService) }}
{{- end -}}

不,没有办法做到这一点。 Helm 依赖项(在 Helm 2 和 Helm 3 中)仅作为以相同 Helm 版本名称安装在集群中的东西工作。如果不使用 post-renderer 之类的东西来操作生成的 YAML,则无法仅包含依赖关系图表的一部分或 re-include 具有不同参数的 Kubernetes 对象。

可以想象子图被专门设计为以这种方式使用。子图必须提供您尝试调用的模板,其 templates/*.yaml 文件将在 if 块中调用具有标准值的模板,然后您的父图可能依赖于子图禁用其正常输出的值。不过,大多数图表并不是以这种方式构建的。