结合golang+k8s+client-go实现restful-http-api 简易管理系统
.
├── README.md
├── deployment // deployment 增刪改查的主逻辑
│ ├── DetailUtil.go // get deployment
│ ├── commonUtil.go // 通用
│ ├── handler.go // post请求: 增减副本数
│ ├── list.go // list操作
│ └── model.go // 结构
├── example.go // 暂时无用,请求反向代理用的脚本
├── go.mod
├── go.sum
├── html // 简易前端页面
│ ├── common
│ │ ├── footer.html
│ │ └── header.html
│ └── deployment
│ ├── deployment_detail.html
│ ├── deployment_list.html
│ └── list.html
├── initClient // k8s客户端
│ └── clientSet.go
├── main.go
├── myproxy // 反向代理,功能暂时不能用,有k8s token问题
│ ├── Readme.md
│ ├── myproxy
│ └── myproxy.go
├── proxy_request_try.go
├── static // 前端
│ ├── css
│ │ ├── bulma.min.css
│ │ └── common.css
│ └── jq3.js
└── util // gin通用函数
├── CommonData.go
└── error_handle.go
目前暂无,预计提供mysql建立表存储。
- 启动
cd 进入项目根目录
[root@vm-0-12-centos k8s-api-practice]# go build
[root@vm-0-12-centos k8s-api-practice]# ./k8s-client-go-api-practice
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] POST /update/deployment/scale --> k8s-client-go-api-practice/deployment.incrReplicas (2 handlers)
[GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (2 handlers)
[GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (2 handlers)
[GIN-debug] Loaded HTML Templates (8):
- header
- deployment_detail.html
- deployment_list.html
- list.html
-
- footer.html
- footer
- header.html
[GIN-debug] GET /deployments --> main.main.func2 (2 handlers)
[GIN-debug] GET /deployments/:name --> main.main.func3 (2 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
- 浏览器+使用postman调用
1. list deployment:获取deployment列表 (完成)
2. get deployment:获取特定deployment (完成)
3. delete deployment:删除特定deployment
4. 增减deployment副本 (完成)
5. update deployment:自定义更新deployment
6. create deployment:创建deployment
list:http短链接调用资源的Api,获取列表 => 或有大量请求的缺点
watch:http长连接持续监听资源,有变化则返回一个watchEvent
使用client-go中的informer可以对list-watch机制进行封装。
解释:
1.刚开始初始化,调用list api获取全量list,并缓存起来。
2.调用watch api去watch资源,发生变更后会通过机制维护缓存(不需要每次都请求api server)