注意!
1-nginx-ingress实现ingress方案是nginx官方提供的,来源地址GitHub - nginxinc/kubernetes-ingress: NGINX and NGINX Plus Ingress Controllers for Kubernetes
2-该配置方案不适用
Welcome - Ingress-Nginx Controller (kubernetes.github.io)
3-ingress-nginx与nginx-ingress是两套不同的基于Nginx的实现ingress的方案
- ingress-nginx 是Kubernetes官网方案
- nginx-ingress 是Nginx官网方案
为了使用 NGINX Ingress 控制器对 WebSocket 应用进行负载均衡,你需要在 Ingress 资源定义中添加 nginx.org/websocket-services 注解。这个注解指定了哪些服务是 WebSocket 服务。注解的语法如下:
nginx.org/websocket-services: "service1[,service2,...]"
在这个例子中,nginx.org/websocket-services 注解被设置为 "service1,service2",这意味着 service1 和 service2 都会被识别为 WebSocket 服务。
在以下示例中,我们将对三个应用进行负载均衡,其中一个应用使用了WebSocket协议:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.org/websocket-services: "websocket-service"
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webapp-service
port:
name: http
- path: /ws
pathType: Prefix
backend:
service:
name: websocket-service
port:
name: ws
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
name: http
在这个例子中:
- nginx.org/websocket-services: "websocket-service" 注解指定了名为 websocket-service 的服务为 WebSocket 类型的服务。
- / 路径映射到名为 webapp-service 的服务。
- /ws 路径映射到名为 websocket-service 的服务,并且通过注解被标记为 WebSocket 服务。
- /api 路径映射到名为 api-service 的服务。