一、介紹
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傾情提供,轉載別忘了標明出處哦~