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

K8s v1.22版本Ingress v1转换时通配符路径适配问题

Kubernetes 1.22 Ingress v1 中间通配符路径适配方案

在networking.k8s.io/v1版本的Ingress规则中,官方定义的PathType仅支持Exact(精确匹配)、Prefix(前缀匹配)和ImplementationSpecific(依赖控制器实现)三种类型,前两种不允许路径中间出现通配符。针对/orders/*/example这类中间带通配符的路径需求,需基于具体Ingress控制器的能力实现,以下是主流NGINX Ingress Controller的两种适配方案:

方案一:直接使用正则路径匹配

添加nginx.ingress.kubernetes.io/use-regex: "true"注解启用正则匹配,将路径替换为合法正则表达式,同时指定pathType: ImplementationSpecific:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: orders-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - host: your-domain.com
    http:
      paths:
      - path: /orders/.*/example
        pathType: ImplementationSpecific
        backend:
          service:
            name: orders-service
            port:
              number: 80

注:.*/会匹配任意字符序列(包括空字符),若需限制为非空路径段,可改用[^/]+/。

方案二:结合rewrite规则转发

如果后端服务期望接收固定路径(如/orders/example),可通过rewrite注解将带通配符的路径重写为后端需要的格式:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: orders-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /orders/example
spec:
  rules:
  - host: your-domain.com
    http:
      paths:
      - path: /orders/([^/]+)/example
        pathType: ImplementationSpecific
        backend:
          service:
            name: orders-service
            port:
              number: 80

其他控制器适配提示

若使用Traefik等其他Ingress控制器,需参考对应控制器文档配置正则路径规则。例如Traefik可通过PathRegexp类型的路由规则实现类似需求。

注意事项

  • 启用正则匹配后,Ingress中所有路径都会按正则规则解析,需确保其他路径配置符合正则语法;
  • 测试时需覆盖多种路径场景(如/orders/123/example、/orders/abc-def/example等),验证匹配是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:35:25