本项目使用 beego + websocket 进行开发
```
_ __ __ ___ _____
/_\ /\ /\ \/ / / _ \\_ \
//_\\/ / \ \ / / /_)/ / /\/
/ _ \ \_/ / \/ ___/\/ /_
\_/ \_/\___/_/\_\/ \____/
🍭 A k8 web terminal TOOL 🍭
```
## k8 web terminal
一个k8s web终端连接工具,在前后端分离或未分离项目中心中,也可以把此项目无缝集成,开箱即用。
## 实现细节
前端用xterm.js库,它是模拟一个terminal在浏览器中,并没有通讯能力。需要在前端建立websocket,连到自己开发的websocket服务端。服务端会基于k8s的remotecommand包,建立与container的ssh长连接,remotecommand包只需要我们提供3个回调,其中read是来获取terminal的输入,我们要做的就是读取websocket发来的数据,然后返回给read回调;write则是用来向terminal发送数据,我们要做的就是调用websocket把数据写到前端,然后前端把数据写给xterm即可;next是用来获取terminal的实际大小的,sshd服务端需要知道终端的大小,这样决定了它一行输出多少个字符就要输出一次换行符。所以,当浏览器窗口改变影响了terminal大小的时候,前端应该把最新的terminal大小发给服务端,然后在next回调中返回其大小。
下面是真实的效果
![2](./doc/2.png)
![1](./doc/1.png)
## 使用方式
- 1
在k8s集群内部署:使用"k8-deploy.yaml"编排进行部署
```cgo
[root@hub-01 ~]# kubectl apply -f k8-deploy.yaml
deployment "terminal-xcbgj" created
service "terminal" created
[root@hub-01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
terminal-xcbgj-78c7ff9ffc-kp99q 1/1 Running 0 26s
- 2
在集群外部署: 需要有/root/.kube/config文件
```cgo
[root@k8s-01 k8]# ls /root/.kube/config
/root/.kube/config
[root@k8s-01 k8]# ls
conf k8-web-terminal static views
[root@k8s-01 k8]# ./k8-web-terminal
2019/07/29 10:25:06.793 [I] [asm_amd64.s:1333] http server Running on http://:8089
# 也可以手动指定文件路径
./k8-web-terminal --kubeconfig ./config
## 感谢以下框架的开源支持
- [Beego] - <http://beego.me/>
## MIT License
```
Copyright (c) 2019 Eric
```
没有合适的资源?快使用搜索试试~ 我知道了~
一个k8s web终端连接工具,在前后端分离或未分离项目中心中,也可以把此项目无缝集成,开箱即用。.zip
共72个文件
js:22个
go:8个
json:7个
需积分: 0 1 下载量 175 浏览量
2024-03-03
17:21:02
上传
评论
收藏 917KB ZIP 举报
温馨提示
一个k8s web终端连接工具,在前后端分离或未分离项目中心中,也可以把此项目无缝集成,开箱即用。.zip
资源推荐
资源详情
资源评论
收起资源包目录
一个k8s web终端连接工具,在前后端分离或未分离项目中心中,也可以把此项目无缝集成,开箱即用。.zip (72个子文件)
k8-web-terminal-master
go.mod 587B
k8-deploy.yaml 2KB
go.sum 15KB
doc
1.png 193KB
2.png 121KB
LICENSE 1KB
controllers
server.go 7KB
index.go 3KB
base.go 1KB
tests
default_test.go 945B
routers
router.go 654B
commentsRouter_controllers.go 2KB
commentsRouter_.go 2KB
Dockerfile 184B
.gitignore 217B
static
assets
style.css 397B
svg
docker.svg 4KB
menu.svg 208B
terminal.svg 796B
main.js 4KB
xterm.js
jsdoc.json 455B
.editorconfig 210B
xtermjs.png 212KB
src
xterm.js 139KB
xterm.css 32KB
LICENSE 1KB
demo
style.css 415B
app.js 1KB
main.js 2KB
index.html 835B
package.json 530B
Procfile.dev 15B
Dockerfile 84B
test
addons
linkify-test.js 3KB
test.js 345B
test.js 8KB
addons
fit
package.json 65B
fit.js 3KB
linkify
package.json 73B
linkify.js 6KB
index.html 989B
fullscreen
fullscreen.css 150B
fullscreen.js 1KB
package.json 79B
attach
package.json 71B
index.html 2KB
attach.js 4KB
README.md 2KB
bower.json 90B
app.css 2KB
reconnecting-websocket
reconnecting-websocket.min.js 3KB
js
reload.min.js 352B
frontend
dashboard
DashboardController.js 2KB
view
dashboard.html 3KB
DashboardService.js 592B
Dashboard.js 1KB
main.js 281B
boot.js 1KB
utils
LogDecorator.js 13KB
supplant.js 2KB
build.css.map 145KB
build.js 1.33MB
config.js 4KB
build.js.map 159KB
build.css 310KB
conf
app.conf 95B
titletext 265B
README.md 2KB
build.sh 159B
views
index.html 1KB
terminal.html 815B
main.go 242B
共 72 条
- 1
资源评论
日刷百题
- 粉丝: 5426
- 资源: 951
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功