在TKE内将服务直接通过端口暴露到外网,可以使用CLB类型service,或者nginx-ingress方式实现,最近处理问题时遇到用户需要将ingress跟service同时使用nginx-ingress方式暴露,不想额外使用CLB,这里就涉及到通过nginx-ingress组件暴露四层TCP/udp的问题
下面以实际在TKE部署一个websocket服务,通过nginx-ingress的四层转发实现
1. 现在集群内部署一个deployment类型工作负载,同步创建service(service访问类型为仅在集群内访问)
2. 按照TKE官方文档部署好nginx-ingress组件
https://cloud.tencent.com/document/product/457/50503
3. 部署好nginx-ingress后,默认会在kube-system namespace下生成tcp/udp 转发 configmap 配置资源
名称一般是:xxxxxx
修改这个configmap,添加我们需要配置的TCP转发规则
4. TKE内的nginx-ingress组件是通过外网CLB类型的service资源提供外网访问的,因此我们同时需要在 nginx-ingress的 service 内配置添加我们暴露的TCP端口
5. 测试,通过postman访问nginx-ingress的公网地址+port ,看到已经可以正常建立websocket连接