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

适配Kubernetes v1.19的Jenkins Ingress配置修改求助:values.yaml中path与pathType配置疑问

问题分析与解决方案

首先,你的核心问题是Kubernetes Ingress API从networking.k8s.io/v1beta1升级到v1后的格式不兼容,尤其是paths的结构要求变了——这也是为什么只有defaultBackend在工作:你的当前配置不符合v1版本的规范,Ingress控制器无法识别你定义的Jenkins服务路径规则,自然 fallback到默认后端。

关于pathType的选择(当path为/时)

当你把path设置为/时,pathType的选择取决于你想要的匹配行为:

  • Prefix:这是最常用且推荐的选项,会匹配所有以/开头的请求(也就是所有请求),完美适配Jenkins根路径的需求。这是K8s标准定义的行为,跨Ingress控制器(比如NGINX、GKE Ingress)的兼容性最好。
  • ImplementationSpecific:这个选项会把路径匹配逻辑完全交给Ingress控制器处理。比如GKE的Ingress对/使用该类型时,行为可能和Prefix类似,但它是非标准的,不同控制器可能有差异,不推荐在这种通用场景下使用。
  • Exact:只会精确匹配/这个路径,其他路径(比如/login、/job)都会被拒绝,显然不适合Jenkins的使用场景。

所以结论是:path为/时,pathType应该设置为Prefix,而非ImplementationSpecific。

修改后的合规配置

下面是适配Kubernetes v1.19+的ingress配置块,我标注了关键修改点:

ingress:
  enabled: true
  # Override for the default paths that map requests to the backend
  paths:
    - path: "/"  # 新增:明确指定根路径
      pathType: "Prefix"  # 新增:设置标准路径匹配类型
      backend:
        service:  # 修改:v1版本使用service块替代旧的serviceName/servicePort字段
          name: >-
            {{ template "jenkins.fullname" . }}
          port:
            number: 8080  # 修改:使用port.number指定端口号(保持整数类型)
  # For Kubernetes v1.14+, use 'networking.k8s.io/v1'
  apiVersion: "networking.k8s.io/v1"
  labels: {}
  annotations:
    kubernetes.io/ingress.global-static-ip-name: jenkins-sandbox-blah
    networking.gke.io/managed-certificates: jenkins-sandbox-blah
    kubernetes.io/ingress.allow-http: "true"
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  # Set this path to jenkinsUriPrefix above or use annotations to rewrite path
  # path: "/jenkins"
  # configures the hostname e.g. jenkins.example.com
  hostName: jenkins.sandbox.io

关键修改说明

  1. paths结构强制要求:networking.k8s.io/v1版本中,每个路径条目必须包含path、pathType和backend三个字段,缺一不可。
  2. Backend格式更新:旧的serviceName和servicePort字段被替换为service.name和service.port.number,这是v1版本的标准结构。
  3. 路径匹配规则明确:添加pathType: Prefix确保所有请求都能正确路由到Jenkins服务,避免控制器忽略无效的路径规则。

验证方法

修改配置后,重新部署Jenkins:

helm upgrade jenkins jenkinsci/jenkins -f your-updated-values.yaml

然后检查Ingress资源的状态,确认规则正确应用:

kubectl describe ingress jenkins-sandbox-blah

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:34:07