先拍个脑袋
市面上对于kubernetes集群的管理平台其实不算少,但常用的就那么几个,比如厚重的rancher,比如老而弥坚的kube-dashboard,以及集成了很多其他功能的kubeSphere等,但和其他开源项目一样,为了满足大多数使用场景,所以会做的相对较重,导致了对其进行二次开发会比较困难,所以在阅读了一些优秀的k8s管理平台的源码后,为什么不自己手搓 一个呢?
1. 需求
在考虑深度需求的时候 ,不妨先想想基础的需求,一个最简单的kubernetes 管理平台,需要哪些功能?
- 全类型资源展示
- 监控数据展示
- 容器TTY
- 容器日志
- 权限管理和审计
- yaml的编辑
- 基本的控制封装(扩容/缩容,排水,打污点等)
上述可以说是对集群管理最基本的功能了,在满足上述功能后,可以再根据业务实际需求进行新需求的封装,比如报表等,这个后面再说。
2. 框架和语言
还是使用常见的MVVM的设计模式,前端使用vue3,后端考虑到需要调用k8s,考虑到client-go的便捷性,所以使用golang作为后端语言,大致的框架如下:
- 前端: Arco Design(字节框架,基于Vue3 + Vite + TS进行封装)
- 后端: Golang+Iris