AWS EKS 支持任何 WebSocket 应用,并且可以使用 Kubernetes 的 ClusterIP 服务暴露应用程序。以下示例演示了如何在 Kubernetes 中部署基于 WebSocket 的应用程序:
apiVersion: v1 kind: Service metadata: name: websockets-app spec: selector: app: websockets-app ports: - name: http port: 80 protocol: TCP targetPort: 8080 - name: websocket port: 8080 protocol: TCP targetPort: 8080
const WebSocket = require('ws');
const port = process.env.PORT || 8080; const server = new WebSocket.Server({ port });
server.on('connection', (socket) => {
console.log('Client connected');
socket.on('message', (data) => {
console.log(Received message: ${data}
);
socket.send(Echoing your message: ${data}
);
});
socket.on('close', () => {
console.log('Client disconnected');
});
});
$ docker build -t your-image . $ aws ecr get-login-password | docker login --username AWS --password-stdin your-account-id.dkr.ecr.your-region.amazonaws.com $ docker tag your-image:latest your-account-id.dkr.ecr.your-region.amazonaws.com/your-repo:latest $ docker push your-account-id.dkr.ecr.your-region.amazonaws.com/your-repo:latest
$ eksctl create cluster --name your-cluster