You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用单个Helm模板为多个同类应用生成部署并遍历配置

你可以直接使用Helm内置的range遍历函数实现统一模板复用,无需维护多份独立模板,具体实现如下:

核心写法

通过range遍历Values.applications下的所有子应用配置,遍历过程中可以直接获取每个应用的配置字段:

{{- range $appName, $appConf := .Values.applications }}
# 每个应用的资源配置都写在这个range块内,会自动为app1、app2各生成一份
spec:
  containers:
  - name: {{ $appConf.containerName }}
    env:
    - name: LOG_LEVEL
      value: "{{ $appConf.logLevel }}"
    # 其他配置按需引用$appConf下的字段即可,比如副本数:{{ $appConf.replicaCount }}
{{- end }}

完整示例(生成多应用独立Deployment)

如果需要为每个应用生成独立的Deployment资源,完整模板写法如下:

{{- range $appName, $appConf := .Values.applications }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ $appName }}-deploy
spec:
  replicas: {{ $appConf.replicaCount }}
  selector:
    matchLabels:
      app: {{ $appConf.containerName }}
  template:
    metadata:
      labels:
        app: {{ $appConf.containerName }}
    spec:
      containers:
      - name: {{ $appConf.containerName }}
        image: your-custom-image:tag
        env:
        - name: LOG_LEVEL
          value: "{{ $appConf.logLevel }}"
        - name: SERVICE_QUEUE
          value: "{{ $appConf.queue }}"
{{- end }}

说明

  • range后的两个变量$appName对应applications下的键(即app1、app2),$appConf对应每个应用的配置对象
  • 块内的---是YAML多文档分隔符,用于分隔多个独立的资源清单
  • 语法里{{-的横杠用于删除渲染时产生的多余空行,避免YAML格式错误

后续如果要新增应用,只需要在values.yaml的applications下新增对应配置即可,模板无需任何修改。

内容的提问来源于stack exchange,提问作者gbt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:24:03