k8s命令行web代理神器gotty

目录
  • 介绍
  • 安装
  • 使用示例
    • -p 指定端口
    • -c 指定账号密码
    • -w 支持tty交互
    • --permit-arguments 支持get参数传参
    • --random-url 生成随机地址
    • --reconnet 支持重新链接
    • --title-format 指定终端名字
  • K8S终端代理示例
    • 启动kubectl终端
    • 查看pod日志
    • 进入pod执行命令

介绍

GoTTY是一个能将你的命令行搬到网页上来的工具。

话不多说,先上图,我们一般使用kubectl都是在命令行,下面展示一下网页版kubectl get pod

image

安装

官方文档:yudai/gotty

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

直接下载你系统的二进制文件:yudai/gotty/releases

我是源码自己编译的

go build *.go

使用示例

  • 启动一个top终端
gotty top

默认是8080端口
k8s命令行web代理神器gotty_第1张图片

访问如下
k8s命令行web代理神器gotty_第2张图片

-p 指定端口

gotty -p 8089 top

-c 指定账号密码

gotty -c abc:123 top

k8s命令行web代理神器gotty_第3张图片

-w 支持tty交互

gotty -w bash

k8s命令行web代理神器gotty_第4张图片
k8s命令行web代理神器gotty_第5张图片

--permit-arguments 支持get参数传参

参数通过arg传递,比如要传递多个参数ls -l

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

最后会变成空格分隔的形式传给命令启动的命令

比如,我们可以动态调用shell命令

gotty --permit-arguments bash -c

k8s命令行web代理神器gotty_第6张图片

--random-url 生成随机地址

比如

 gotty --random-url -w bash

k8s命令行web代理神器gotty_第7张图片

我们现在再访问得通过地址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命令行web代理神器gotty_第8张图片

K8S终端代理示例

启动kubectl终端

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

这里我们试一下

kubectl get po

可以这样访问

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

k8s命令行web代理神器gotty_第9张图片

查看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

k8s命令行web代理神器gotty_第10张图片

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

访问如下
k8s命令行web代理神器gotty_第11张图片

可以这里有个问题,不能执行命令!
这是为啥呢?
因为我们启动kubectl的时候没有加入交互参数-w,我们停止之前的命令加入-w再重新执行一遍

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

再访问可以正常执行shell了
k8s命令行web代理神器gotty_第12张图片

你可能感兴趣的:(k8s命令行web代理神器gotty)