代理 WebSocket 连接
WebSocket 是一种在单个 TCP 连接上为客户端和服务器提供双向通道的协议。它让 Web 上的实时通信可以即时收发数据,广泛用于聊天应用、协同编辑工具、多人游戏等交互式应用 。
本指南介绍如何使用 Ingress Controller 配置网关代理 WebSocket 连接。如果需要对 WebSocket 连接限流,请参阅 limit-conn 插件。
前提条件
启动示例上游服务
创建 Kubernetes manifest 文件,部署 WebSocket 服务器及其 Service。该服务器在 /.ws 提供 WebSocket 端点,并会回显收到的任何消息。
ws-echo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: aic
name: websocket-server
spec:
replicas: 1
selector:
matchLabels:
app: websocket-server
template:
metadata:
labels:
app: websocket-server
spec:
containers:
- name: echo-server
image: jmalloc/echo-server
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
namespace: aic
name: websocket-server
spec:
selector:
app: websocket-server
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: ClusterIP
将配置应用到集群:
kubectl apply -f ws-echo.yaml