k8 web terminal
一個k8s web終端連接工具,在前后端分離或未分離項目中心中,也可以把此項目無縫集成,開箱即用。
項目地址:https://github.com/jcops/k8-web-terminal
實現細節
前端用xterm.js庫,它是模擬一個terminal在瀏覽器中,並沒有通訊能力。需要在前端建立websocket,連到自己開發的websocket服務端。服務端會基於k8s的remotecommand包,建立與container的ssh長連接,remotecommand包只需要我們提供3個回調,其中read是來獲取terminal的輸入,我們要做的就是讀取websocket發來的數據,然后返回給read回調;write則是用來向terminal發送數據,我們要做的就是調用websocket把數據寫到前端,然后前端把數據寫給xterm即可;next是用來獲取terminal的實際大小的,sshd服務端需要知道終端的大小,這樣決定了它一行輸出多少個字符就要輸出一次換行符。所以,當瀏覽器窗口改變影響了terminal大小的時候,前端應該把最新的terminal大小發給服務端,然后在next回調中返回其大小。
下面是真實的效果


感謝以下框架的開源支持
- [Beego] - http://beego.me/
MIT License
Copyright (c) 2019 Eric
