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

Helm 3中Ingress.yaml与Values.yaml规则不匹配致路径字段缺失错误排查

问题分析与解决方案

你遇到的报错是因为values.yaml的Ingress配置结构和你的模板预期不匹配,导致渲染后的Ingress YAML缺少必填的paths字段。具体问题和修正方法如下:

1. 核心问题:Hosts结构不符合模板逻辑

你的Ingress模板中,对.Values.ingress.hosts的处理逻辑是:

  • 遍历每个host条目,读取条目里的host字段作为域名
  • 遍历条目里的paths数组,生成Ingress规则中的http.paths部分,并且backend固定使用模板中定义的服务全名($fullName)和服务端口($svcPort)

但你在values.yaml里错误地把paths嵌套在了http字段下,还自定义了backend配置——这会让模板找不到paths数据,最终渲染出的Ingress YAML里http字段下没有paths,触发了Kubernetes的校验错误。

2. 修正后的values.yaml配置

根据你现有模板的逻辑,调整后的values.yaml应该是这样:

ingress:
  enabled: true
  # 去掉了模板未使用的name和type字段(Ingress没有type配置,这是Service的属性)
  annotations:
    kubernetes.io/ingress.class: "nginx-environment"
  hosts:
    - host: "onion.api.environment.cloud.google.com"
      # 直接在host条目下定义paths数组,匹配模板的遍历逻辑
      paths:
        - "/"
  tls:
    - secretName: "onion.api.environment.cloud.google.com-tls"
      hosts:
        - "onion.api.environment.cloud.google.com"
        - "*.cloud.google.com"

3. 如果你需要自定义Backend(可选)

如果你的实际需求是让Ingress路径指向自定义的服务(比如internal服务的8081端口),而不是模板默认的服务,那你需要修改Ingress模板的paths渲染逻辑:

修改模板中的rules部分为:

rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
  http:
    paths:
    {{- range .paths }}
    - path: {{ .path }}
      backend:
        serviceName: {{ .backend.serviceName }}
        servicePort: {{ .backend.servicePort }}
    {{- end }}
{{- end }}

对应的values.yaml里的hosts配置要改成:

hosts:
  - host: "onion.api.environment.cloud.google.com"
    paths:
      - path: "/"
        backend:
          serviceName: internal
          servicePort: 8081

这样就能实现自定义路径到指定服务的映射了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:12:33