websocket 服务可以在客户端和服务器之间提供全双工、实时的数据交换,在现代软件开发中应用越来越多。那如何在 kubernetes 集群中部署并配置 websocket 服务呢?
ingress 配置
如果通过 ingress 配置 ws 路由,需要在 ingress 中配置如下转发:
backend:
service:
name: websocket-service
port:
number: 80
nginx 配置
如果通过 nginx 配置 websocket 转发路由,则需在 nginx 中配置如下路由:
location /ws {
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;
proxy_pass http://ws_service:8000/;
}
其中比较重要的是指定两个 header : Connection 及 Upgrade。如上配置后,在服务代码中可以使用熟悉的 websocket 包去处理 ws 逻辑了,比如 golang 中流行的包 github.com/gorilla/websocket