Traefik v1.7 Ingress配置:路径前缀匹配转发至后端K8s服务
Traefik v1.7 Kubernetes Ingress 完整配置方案
以下是满足你需求的完整Ingress配置,包含M1、M2、M3的路由规则:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: mytest-ingress annotations: kubernetes.io/ingress.class: "traefik" # 为M3配置路径重写:将请求路径中的/foo前缀替换为/api traefik.ingress.kubernetes.io/rewrite-target: /api # 采用路径前缀匹配模式,确保/foo下的子路径也能正确转发 traefik.ingress.kubernetes.io/rule-type: "PathPrefix" spec: rules: - host: mytest.com http: paths: # 根路径转发到M1服务的80端口 - path: / backend: serviceName: m1-service servicePort: 80 # /api路径转发到M2服务的8000端口 - path: /api backend: serviceName: m2-service servicePort: 8000 # /foo路径转发到M3服务的5000端口,配合rewrite-target重写为/api - path: /foo backend: serviceName: m3-service servicePort: 5000
关键配置说明
- Ingress类指定:
kubernetes.io/ingress.class: "traefik"必须添加,告诉Kubernetes使用Traefik处理该Ingress规则。 - M3路径重写:
traefik.ingress.kubernetes.io/rewrite-target: /api是实现mytest.com/foo → M3的/api的核心,它会将所有匹配/foo前缀的请求路径替换为/api后转发给M3服务。 - 匹配模式:
rule-type: "PathPrefix"确保/foo以及/foo/xxx这类子路径请求都能被正确匹配并转发,如果你只需要精确匹配/foo,可以把path改为/foo$并去掉该annotation。 - 服务映射:每个path对应的
serviceName和servicePort要和你实际创建的K8s Service名称、端口完全一致。
验证方法
部署配置后,可通过以下方式验证:
- 查看Ingress状态:
kubectl describe ingress mytest-ingress - 测试M3路由:
curl -H "Host: mytest.com" http://<你的Traefik节点IP>/foo,确认返回M3服务/api路径的响应。
内容的提问来源于stack exchange,提问作者user1452759
相关产品推荐
相关产品推荐

