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

如何在Helm Chart中通过range遍历复杂values.yaml生成Manifest

Helm模板化实现方案

你可以通过Helm的range遍历语法批量生成所有应用的资源清单,同时支持跳过标记为禁用的应用,以下是可直接使用的实现:

改造后的模板文件(替换原Sample.yaml内容即可)

{{- range $appKey, $appConfig := .Values.prodapps }}
{{- if not $appConfig.disable }}
---
apiVersion: v1
kind: Service
metadata:
  name: "{{ $appConfig.name }}-svc"
  namespace: "{{ $.Release.Namespace }}"
spec:
  ports:
    - port: 80
      name: "http"
  selector:
    app: "{{ $appConfig.name }}"
{{/* 后续如果需要新增Deployment、Ingress等资源,直接在这个判断块内追加对应模板即可 */}}
{{- end }}
{{- end }}

关键逻辑说明

  • range $appKey, $appConfig := .Values.prodapps:遍历Values中prodapps下的所有应用配置,自动适配新增的应用条目,无需修改模板
  • if not $appConfig.disable:自动跳过配置了disable: true的应用,示例中的beta应用会默认不生成对应资源
  • 变量引用注意事项:进入range循环后作用域会发生变化,要引用根级的全局变量(比如.Release.Namespace)需要加$.前缀,引用当前应用的配置直接用$appConfig.属性名即可

本地验证方法

执行以下命令可以在本地直接渲染模板,验证输出的Manifest是否符合预期:

helm template <自定义发布名称> <你的Chart目录路径>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:06:03