千家信息网

K8S traffic ingress rewrite 规则

发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,需求如下:域名 servicewww.baidu.com/authorize saas-jcpt-saas-uc-authorize-core-tomcat-online分析:1.要到ingress,
千家信息网最后更新 2025年01月30日K8S traffic ingress rewrite 规则

需求如下:

域名 service
www.baidu.com/authorize saas-jcpt-saas-uc-authorize-core-tomcat-online

分析:

1.要到ingress,所以前面不能去掉authorize

2.需要在ingress上配置rewrite

配置

www.baidu.com和saas-jcpt-saas-uc-authorize-core-tomcat-online这两个在不同的命名空间,所以需要在saas-jcpt-tomcat-online下创建一个新的ingress,配置如下:

apiVersion: extensions/v1beta1kind: Ingressmetadata:name: public-fe-n-saas-uc-node-online-ingressnamespace: saas-jcpt-tomcat-onlineannotations:traefik.ingress.kubernetes.io/rewrite-target: /spec:rules:- host: www.baidu.comhttp:paths:- backend:serviceName: saas-jcpt-saas-uc-authorize-core-tomcat-onlineservicePort: 8080path: /authorizestatus:loadBalancer: {}

注意一个小坑:

如下需求:

域名 service

www.abc.com/aaa/ saas-jcpt-saas-uc-authorize-core-tomcat-online/bbb/

我们习惯的写法可能如下:

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: public-fe-n-saas-uc-node-online-ingress  namespace: saas-jcpt-tomcat-online  annotations:    traefik.ingress.kubernetes.io/rewrite-target: /bbb/spec:  rules:  - host: www.abc.com    http:      paths:      - backend:          serviceName: saas-jcpt-saas-uc-authorize-core-tomcat-online          servicePort: 8080        path: /aaa/status:  loadBalancer: {}

这个时候我们访问http://www.abc.com/aaa/xxx,我们发会现404,容器上抓包发现实际调用的URL为:saas-jcpt-saas-uc-authorize-core-tomcat-online/bbbxxx,中间的/没有了。

同时把path及traefik.ingress.kubernetes.io/rewrite-target最后的/去掉,问题可解决:

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: public-fe-n-saas-uc-node-online-ingress  namespace: saas-jcpt-tomcat-online  annotations:    traefik.ingress.kubernetes.io/rewrite-target: /bbbspec:  rules:  - host: www.abc.com    http:      paths:      - backend:          serviceName: saas-jcpt-saas-uc-authorize-core-tomcat-online          servicePort: 8080        path: /aaastatus:  loadBalancer: {}
0