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

Kong Ingress下cert-manager的.well-known路由被后端覆盖如何解决

问题根因

你遇到的路由冲突确实来自/*通配符配置:Kong Ingress 路径匹配遵循精确前缀优先规则,但你配置的/*属于全局通配匹配,优先级会覆盖cert-manager自动生成的/.well-known/*验证路径,导致所有请求都被转发到Backend服务。

修复步骤

方案一:调整现有Backend Ingress的匹配规则(无需修改cert-manager配置)

给Backend的Ingress添加正则匹配注解,排除.well-known路径:

  1. 在annotations中新增Kong正则匹配优先级配置,数值越低优先级越低:
annotations:
  kubernetes.io/tls-acme: "true"
  acme.cert-manager.io/http01-edit-in-place: "true"
  kubernetes.io/ingress.class: kong
  cert-manager.io/cluster-issuer: letsencrypt-prod
  konghq.com/regex-priority: "10" # 低于cert-manager验证路由的默认优先级
  1. 修改路径配置为排除.well-known前缀的正则匹配:
http:
  paths:
    - path: /~^/(!(\.well-known)).*$
      pathType: ImplementationSpecific
      backend:
        service:
          name: your-backend-service
          port:
            number: 80

方案二:拆分验证路由与业务路由(更稳定,推荐)

  1. 移除Backend Ingress中的acme.cert-manager.io/http01-edit-in-place: "true"注解,允许cert-manager为HTTP01验证生成独立的Ingress资源
  2. 修改你的letsencrypt-prod ClusterIssuer配置,给验证Ingress设置更高的路由优先级:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: kong
          ingressTemplate:
            metadata:
              annotations:
                konghq.com/regex-priority: "100" # 优先级高于业务路由,优先匹配

验证修复结果

配置更新后,重新触发证书签发:

# 替换为你的证书资源名称
kubectl cert-manager renew your-tls-cert-name

查看是否生成临时验证Ingress,或者原Ingress是否注入了.well-known前缀的路径规则,手动访问验证路径确认返回cert-manager的验证字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 15:21:02