前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构建简单的websocket服务并部署到TKE集群

构建简单的websocket服务并部署到TKE集群

原创
作者头像
chen1900s
修改2023-10-06 17:03:48
3640
修改2023-10-06 17:03:48
举报
文章被收录于专栏:TKE学习TKE学习

clb默认支持wss、ws,所以TKE的CLB类型ingress是默认支持的,不需要额外配置,直接使用

nginx ingress类型的ingress也是支持websocket需要开启这个,参考如下文档:

https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/#websockets

这里我们将使用Python和WebSocket库创建一个简单的WebSocket服务,然后使用Docker和Kubernetes进行部署。

1,创建WebSocket服务

首先,确保你已经安装了Python和WebSocket库。在命令行中运行以下命令以安装WebSocket库:

代码语言:javascript
复制
pip install websockets

创建一个名为websocket_server.py的文件,然后将以下代码粘贴到文件中:

代码语言:javascript
复制
import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(f"Echo: {message}")

start_server = websockets.serve(echo, "0.0.0.0", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

2,创建Docker镜像

创建一个名为Dockerfile的文件,然后将以下代码粘贴到文件中:

代码语言:javascript
复制
FROM python:3.8-slim

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "websocket_server.py"]

在同一目录下创建一个名为requirements.txt的文件,然后将以下内容粘贴到文件中:

代码语言:javascript
复制
websockets

在命令行中运行以下命令以构建Docker镜像:

代码语言:javascript
复制
#镜像仓库替换成自己镜像仓库地址和命名空间名称

docker build -t ccr.ccs.tencentyun.com/chen1900s/my-websocket-server:latest .

3,部署到Kubernetes

这里是使用腾讯云TKE集群进行部署

确保你已经安装了kubectl和配置了Kubernetes集群。创建一个名为deployment.yaml的文件,然后将以下代码粘贴到文件中:

代码语言:yaml
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: websocket-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: websocket-server
  template:
    metadata:
      labels:
        app: websocket-server
    spec:
      containers:
      - name: websocket-server
        image: ccr.ccs.tencentyun.com/chen1900s/my-websocket-server:latest
        ports:
        - containerPort: 8765
---
apiVersion: v1
kind: Service
metadata:
  name: websocket-server
spec:
  selector:
    app: websocket-server
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8765
  type: LoadBalancer
  
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: qcloud
  name: websocket-server
spec:
  rules:
  - host: www.chen1900s.cn        #替换成自己的域名
    http:
      paths:
      - backend:
          service:
            name: websocket-server
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific
  tls:
  - secretName: chen1900s-6h3tqwaa      #需要提前创建好对应secret

在命令行中运行以下命令以部署WebSocket服务:

代码语言:shell
复制
kubectl apply -f deployment.yaml

现在,WebSocket服务应该已经部署到Kubernetes集群,并通过LoadBalancer服务暴露。你可以通过运行以下命令来检查部署状态:

代码语言:shell
复制
kubectl get deployments
kubectl get services

根据输出的LoadBalancer的IP地址和端口,你可以与WebSocket服务建立连接进行测试。

4,功能测试

可以使用这个在线工具测试

http://wstool.jackxiang.com/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档