k8s命令行web代理神器gotty

一、介紹

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

image

訪問如下,可以看到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傾情提供,轉載別忘了標明出處哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章