k8s 容器终端参考如下链接
https://github.com/kubernetes-ui/container-terminal
为什么需要代理? 项目对k8s的api请求升级为https,导致对应的ws也升级为wss,需要项目另起一个proxy服务作为中间代理。
解决思路:
1、terminal->wss请求(web_socket1) 项目 api请求(web_socket2) -> kubernetes
2、goroutine1 读 web_socket1的message,写入web_socket2
3、goroutine2 读 web_socket2的message , 写入web_socket1
4、web_socket存储方式,map中key为时间戳,value为这两个web_socket。
golang实现,具体实现可以私下交流。
//创建终端代理
func (this *TermProxyController) ProxyRun() {
var (
err error
conn service.ProxyConn
)
namespace := this.Ctx.Request.URL.Query().Get("namespace")
podName