目錄
一、介紹
GoTTY是一個能將你的命令列搬到網頁上來的工具。你可以代理shell、docker、ps各種你用黑視窗操作的命令。
話不多說,先上圖,我們一般使用kubectl都是在命令列,下面展示一下網頁版kubectl get pod
二、安裝
官方文件:yudai/gotty
- 方式一
go get github.com/yudai/gotty
- 三、方式二
brew install yudai/gotty/gotty
- 方式三
直接下載你係統的二進位制檔案:yudai/gotty/releases
我是原始碼自己編譯的
go build *.go
安裝完成執行gotty
會出現以下介面
三、使用示例
- 啟動一個top終端
gotty top
預設是8080埠
訪問如下
-p 指定埠
gotty -p 8089 top
-c 指定賬號密碼
gotty -c abc:123 top
-w 支援tty互動
gotty -w bash
--permit-arguments 支援get傳參
引數通過arg傳遞,比如要傳遞多個引數ls -l
http://127.0.0.1:8080/?arg=ls&arg=-l
最後會變成空格分隔的形式傳你啟動的命令
比如,我們可以動態呼叫shell命令
gotty --permit-arguments bash -c
--random-url 生成隨機地址
我們執行一下
gotty --random-url -w bash
我們現在再訪問得通過地址http://192.168.203.73:8080/fla589kv,而不再是一個簡單的8080埠地址http://192.168.203.73:8080
--reconnet 支援重新連結
gotty -w --reconnect bash
簡單說你操作一會兒後,重新整理瀏覽器內容還保持著
可以配合--reconnect-time指定最大超時時間--reconnect-time
--title-format 指定終端名字
例如
gotty -w bash --title-format chenqionghe
訪問如下,可以看到title變成了chenqionghe
四、K8S終端代理示例
啟動kubectl終端
gotty --permit-arguments kubectl --kubeconfig ./test
這裡我們試一下
kubectl get po
可以這樣訪問
http://127.0.0.1:8080/?arg=get&arg=po
檢視pod日誌
如果我們要想看pod nginx-demo-5b79dc546f-cs6f的日誌,命令列是這樣的
kubectl --kubeconfig ./test logs -f nginx-demo-5b79dc546f-cs6fz -n web
地址就可以這樣訪問
http://127.0.0.1:8080/?arg=logs&arg=-f&arg=nginx-demo-5b79dc546f-cs6fz&arg=-n&arg=web
進入pod執行命令
命令列命令如下
kubectl --kubeconfig ./test exec -it nginx-demo-5b79dc546f-cs6fz -n web bash
我們換成地址訪問
http://127.0.0.1:8080/?arg=exec&arg=-it&arg=nginx-demo-5b79dc546f-cs6fz&arg=-n&arg=web&arg=bash
訪問如下
可以這裡有個問題,不能執行命令!
這是為啥呢?
因為我們啟動kubectl的時候沒有加入互動引數-w,我們停止之前的命令加入-w再重新執行一遍
gotty -w --permit-arguments kubectl --kubeconfig ./test
再訪問可以正常執行shell了
以上內容由chenqionghe傾情提供,轉載別忘了標明出處哦~