k8s ingress 转发服务,内容显示不全问题
0x00 事件
部署了 ingress ,并声明了两个路由 /eureka
和 /tomcat
,/eureka
转发到了 eureka server 的服务端口,/tomcat
转发到了 tomcat 的端口。
yaml 文件是这样的:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: xxx.xxx.xxx
http:
paths:
- path: /tomcat
backend:
serviceName: webapp
servicePort: 8080
- path: /eureka
backend:
serviceName: eureka-server
servicePort: 2000
但是通过 ingress 定义的域名加路由访问服务时候,却发现服务的页面加载不全:
访问 xxx.xxx.xxx/eureka
访问 xxx.xxx.xxx/tomcat
0x01 排查方案
在做了一些排查之后,发现只有把对应的域名的 /
转发到相应服务,才能把页面加载完全。
修改之后的 yaml 文件:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: xx.xx.xx
http:
paths:
- path: /
backend:
serviceName: eureka-server
servicePort: 2000
- host: nn.nn.nn
http:
paths:
- path: /
backend:
serviceName: webapp
servicePort: 8080
重新部署之后,直接访问 xx.xx.xx
:
访问 nn.nn.nn