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

如何基于Helm Values中multiPod变量生成不同名称的ConfigMap?

问题需求

需要根据Values文件中的multiPod变量生成不同名称的ConfigMap:

  • 当multiPod设为true时,基于region列表生成对应数量的ConfigMap
  • 当multiPod设为false时,基于父级key(如storage、compute)生成单个ConfigMap

当前配置与输出

现有ConfigMap模板(templates/configmap.yaml)

{{- range $keys, $values := $.Values.topicsToRead }}

{{- if $values.multiPod }}
{{- range $values.region }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-{{ . }}
data:
  features.toml: |
    [features]
    x_enabled = false
{{- end -}}
{{- end }}
{{- end }}

Values.yaml配置

topicsToRead:
  compute:
    multiPod: true
    region:
      - region815
      - region816
      - region817
  storage:
    multiPod: false
    region:
      - region715
      - region716
      - region717

当前执行结果

执行命令 helm template -s templates/configmap.yaml . 后输出:

---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-region815
data:
  features.toml: |
    [features]
    x_enabled = false
---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-region816
data:
  features.toml: |
    [features]
    x_enabled = false
---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-region817
data:
  features.toml: |
    [features]
    x_enabled = false

期望输出

---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-region815
data:
  features.toml: |
    [features]
    x_enabled = false
---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-region816
data:
  features.toml: |
    [features]
    x_enabled = false
---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-region817
data:
  features.toml: |
    [features]
    x_enabled = false
---
# Source: helm-chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-storage
data:
  features.toml: |
    [features]
    x_enabled = false

解决方案

修改ConfigMap模板,添加else分支处理multiPod: false的场景,使用遍历得到的$keys作为ConfigMap名称的后缀:

{{- range $keys, $values := $.Values.topicsToRead }}

{{- if $values.multiPod }}
{{- range $values.region }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-{{ . }}
data:
  features.toml: |
    [features]
    x_enabled = false
{{- end -}}
{{- else }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-{{ $keys }}
data:
  features.toml: |
    [features]
    x_enabled = false
{{- end }}
{{- end }}

修改后重新执行helm template -s templates/configmap.yaml .,即可得到期望的输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:42:41