Helm 为模板创建模板

Helm create template for template

是否可以为 templates/ 文件夹中的模板文件创建 helm 模板?我的用例如下:有几个 kubernetes 部署文件,它们仅在部署名称和从存储库中提取的 docker 图像(例如 service1service2 等的部署)方面有所不同。我想创建一个图表来部署所有这些服务。目前我的部署模板中有很多复制粘贴。我想为该模板提供某种模板。此外,所有部署模板在不同环境中都将具有不同的 Values.yaml(例如,service1 和 service2 在生产环境中具有 values-prod.yaml,在暂存环境中具有 values-stage.yaml

如果不可能,有哪些替代解决方案?谢谢

对于那些对解决方案感兴趣的人: 正如 David Maze 在对我的问题的评论中所建议的那样,我应该在模板文件中使用类似于 {{ range .Values.resourceNames }} 的内容(例如 deployment.yaml),并在循环开始时将这些资源与 --- 分开(kubernetes 允许在由 --- 分隔的单个文件中定义多个资源),其中 .Values.resourceNames 只是一个示例。因此,deployment.yaml 模板可能如下所示:

{{- range .Values.resourceNames }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .name }}-deployment
  labels:
    app: {{ .name }}
spec:
  replicas: {{ .replicaCount }}
  selector:
    ...
{{- end }}

其中 values.yaml 文件如下所示:

resourceNames:
  - name: service1
    replicaCount: 2
  - name: service2
    replicaCount: 1