k8s命令列web代理神器gotty

雪山飛豬發表於2022-03-15

一、介紹

GoTTY是一個能將你的命令列搬到網頁上來的工具。你可以代理shell、docker、ps各種你用黑視窗操作的命令。

話不多說,先上圖,我們一般使用kubectl都是在命令列,下面展示一下網頁版kubectl get pod

image

二、安裝

官方文件:yudai/gotty

  • 方式一
go get github.com/yudai/gotty
  • 三、方式二
brew install yudai/gotty/gotty
  • 方式三

直接下載你係統的二進位制檔案:yudai/gotty/releases

我是原始碼自己編譯的

go build *.go

安裝完成執行gotty會出現以下介面
image

三、使用示例

  • 啟動一個top終端
gotty top

預設是8080埠
image

訪問如下
image

-p 指定埠

gotty -p 8089 top

-c 指定賬號密碼

gotty -c abc:123 top

image

-w 支援tty互動

gotty -w bash

image
image

--permit-arguments 支援get引數傳參

引數通過arg傳遞,比如要傳遞多個引數ls -l

http://127.0.0.1:8080/?arg=ls&arg=-l

最後會變成空格分隔的形式傳給命令啟動的命令

比如,我們可以動態呼叫shell命令

gotty --permit-arguments bash -c

image

--random-url 生成隨機地址

我們執行一下

 gotty --random-url -w bash

image

我們現在再訪問得通過地址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
image

四、K8S終端代理示例

啟動kubectl終端

gotty --permit-arguments kubectl --kubeconfig ./test

這裡我們試一下

kubectl get po

可以這樣訪問

http://127.0.0.1:8080/?arg=get&arg=po

image

檢視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

image

進入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

訪問如下
image

可以這裡有個問題,不能執行命令!
這是為啥呢?
因為我們啟動kubectl的時候沒有加入互動引數-w,我們停止之前的命令加入-w再重新執行一遍

gotty -w --permit-arguments kubectl --kubeconfig ./test

再訪問可以正常執行shell了
image

以上內容由chenqionghe傾情提供,轉載別忘了標明出處哦~

相關文章