升级Kong至3.x版本后正则表达式无法正常工作求助
Kong 3.2升级后Ingress正则路径匹配失效解决方法
问题根源
Kong 3.x版本对Kubernetes Ingress的路径匹配逻辑做了调整:默认情况下,即便设置pathType: ImplementationSpecific,也不会自动将path字段解析为正则表达式,需要显式声明或调整正则写法才能生效。
解决方案一:添加正则匹配注解(推荐)
在Ingress的metadata.annotations中添加konghq.com/path-regex: "true",明确告知Kong将path内容当作正则表达式处理,保留原有正则写法即可:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: labels: app.kubernetes.io/name: payment-svc name: payment-without-auth namespace: payment annotations: konghq.com/path-regex: "true" # 开启正则匹配模式 spec: ingressClassName: kong rules: - host: abc.example.com http: paths: - backend: service: name: payment-svc port: number: 80 path: /payment/(docs|health) pathType: ImplementationSpecific
解决方案二:调整正则路径写法
若不想使用注解,可将path改为Kong 3.x认可的正则格式——以~开头,同时添加正则锚点^(匹配开头)和$(匹配结尾),确保精确匹配:
path: ~^/payment/(docs|health)$
额外检查项
- 确保Kong Ingress Controller版本与Kong网关3.2版本兼容,建议同步升级到对应3.x系列的controller版本,避免版本不匹配导致的兼容问题。
- 验证正则语法正确性:若仍报错,可单独测试正则表达式
^/payment/(docs|health)$是否符合预期,排除语法错误。
内容的提问来源于stack exchange,提问作者Gauri Joshi
相关产品推荐
相关产品推荐

