k8s web終端連接工具

k8 web terminal

一個(gè)k8s web終端連接工具,在前后端分離或未分離項(xiàng)目中心中,也可以把此項(xiàng)目無(wú)縫集成,開箱即用。
項(xiàng)目地址:https://github.com/jcops/k8-web-terminal

實(shí)現(xiàn)細(xì)節(jié)

前端用xterm.js庫(kù),它是模擬一個(gè)terminal在瀏覽器中,并沒(méi)有通訊能力。需要在前端建立websocket,連到自己開發(fā)的websocket服務(wù)端。服務(wù)端會(huì)基于k8s的remotecommand包,建立與container的ssh長(zhǎng)連接,remotecommand包只需要我們提供3個(gè)回調(diào),其中read是來(lái)獲取terminal的輸入,我們要做的就是讀取websocket發(fā)來(lái)的數(shù)據(jù),然后返回給read回調(diào);write則是用來(lái)向terminal發(fā)送數(shù)據(jù),我們要做的就是調(diào)用websocket把數(shù)據(jù)寫到前端,然后前端把數(shù)據(jù)寫給xterm即可;next是用來(lái)獲取terminal的實(shí)際大小的,sshd服務(wù)端需要知道終端的大小,這樣決定了它一行輸出多少個(gè)字符就要輸出一次換行符。所以,當(dāng)瀏覽器窗口改變影響了terminal大小的時(shí)候,前端應(yīng)該把最新的terminal大小發(fā)給服務(wù)端,然后在next回調(diào)中返回其大小。

下面是真實(shí)的效果

image.png
image.png

感謝以下框架的開源支持

MIT License

Copyright (c) 2019 Eric
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容