如何编写Helm模板实现多后端多路径的Ingress配置?
Helm Ingress多服务多路径模板修正方案
原模板的核心问题是嵌套range循环时的上下文丢失:当遍历.paths时,当前的.指向单个path字符串,无法直接引用外层service的name和port,导致变量引用错误。
修正后的Ingress模板
rules: - host: {{ $.Values.ingress.host }} http: paths: {{- range $service := .Values.ingress.service }} {{- range $path := .paths }} - path: {{ $path }} pathType: Prefix backend: service: name: {{ $service.name }} port: number: {{ $service.port }} {{- end }} {{- end }}
关键修改说明
- 外层range循环通过
$service := .将当前service对象保存为全局变量,避免内层循环覆盖上下文 - 内层遍历路径时,用
$path接收单个路径值,明确区分不同层级的上下文 - 引用服务的名称和端口时,使用
$service.name和$service.port,确保指向正确的外层服务配置
结合你提供的values文件,该模板会生成你期望的Ingress规则,每个路径都会对应所属服务的完整后端配置。
内容的提问来源于stack exchange,提问作者elmehdi
相关产品推荐
相关产品推荐

