金融证券网站模板,wordpress密码无法重置,网络营销策划要素,网站开发小图片✨✨ 欢迎大家来到景天科技苑✨✨
#x1f388;#x1f388; 养成好习惯#xff0c;先赞后看哦~#x1f388;#x1f388; #x1f3c6; 作者简介#xff1a;景天科技苑 #x1f3c6;《头衔》#xff1a;大厂架构师#xff0c;华为云开发者社区专家博主#xff0c;…
✨✨ 欢迎大家来到景天科技苑✨✨ 养成好习惯先赞后看哦~ 作者简介景天科技苑 《头衔》大厂架构师华为云开发者社区专家博主阿里云开发者社区专家博主CSDN全栈领域优质创作者掘金优秀博主51CTO博客专家等。 《博客》Python全栈Golang开发云原生开发PyQt5和Tkinter桌面开发小程序开发人工智能js逆向App逆向网络系统安全数据分析Djangofastapiflask等框架云原生K8Slinuxshell脚本等实操经验网站搭建数据库等分享。 所属的专栏云原生开发 景天的主页景天科技苑 文章目录 K8S多集群管理平台架构设计1. 如何从零开始写一个完整的项目2. 设计之前还需要考虑先写前端还是先写后端3. 前后端分离项目架构设计4. 涉及到的技术栈5. 前后端分离域名访问路由设计1. 前端路由设计2. 后端路由设计 6. 前后端数据交互模型设计--后端返回数据7. 前端提交数据规范8. 元数据存储的设计1. 哪些数据需要存储2. 数据存储到哪里3. 元数据的存储格式设计 K8S多集群管理平台架构设计
云原生Cloud Native是一种构建和运行应用程序的方法充分利用云计算模型的优势如弹性、可扩展性、高可用性和自动化以实现更高的应用可靠性、可维护性和可移植性。本文云原生开发是基于golangvue开发出的一个K8S多集群管理平台实现web页面对过个K8S集群资源的深度管理。
学一门语言并不是简单的会写一些脚本要有拿得出手的成果作品。
1. 如何从零开始写一个完整的项目
并不是拿一个做好的项目去改而是从零开始大型项目可能需要进行头脑风暴列出来所有的功能点需要或者事件需要各种设计比如架构设计模型设计结构设计ER图设计EML设计UI设计小组开发肯呢个并不需要这么多人介入进来比如页面风格可能是我们设计的接口的风格也是我们自己去定义的所以进行项目的开发并不是向之前学的练习那么简单上来就直接去写。我们在做项目的时候耗费很多的时间和精力在前期的准备或者设计中要不然做到最后就没办法进行下去到了难以维护的状态比 如说各种不统一不规范。已经没有办法再维护下去了。想要做好一个项目从设计开始最后才是工程实现。
2. 设计之前还需要考虑先写前端还是先写后端
当然在多人的项目中可能前后端是同步进行的但是在我们这个这么卷的年代可能我们是身兼多职的前后端都自己写这时候就要规划下是先写前端还是先写后端还是直接一起写一般是先写后端再写前端最后再前后端结合一起去完成的为什么要先去写后端呢 因为后端是离数据最近的地方我们写代码大部分时间都是CRUD。我们在操作数据的时候需要数据的一种格式或一种规范有了格式之后我们才能以最简单最高效的方式去操作这个数据。比如说我们去创建一个用户这个用户的数据格式以什么方式去插入数据这个肯定会在后端比较清晰的。所以我们在先写后端的情况下可以先定义好这些数据格式前端就可以直接使用我们定义好的数据格式去渲染页面传递数据数据交互。如果我们先去写前端我们可能是根据自己的理解去定义数据格式到最后可能和后端联调的时候能会出现我们在前端定义的数据格式没有办法给后端去使用的这样的话我们可能需要再次地去变更数据的格式变更的话前端的代码还需要去调整造成了时间的浪费。后端数据定义更加精确前端可以无需定义Mock函数
3. 前后端分离项目架构设计
我们的项目是一个去管理k8s资源的平台而且是多集群的管理平台也就是说我们的平台可以管理很多个K8S集群。 字需要将我们得K8S集群配置到我们的后端控制的范围之内就可以去操作这个集群当中的很多资源比如说deploymentdaemansetserviceconfigMap等等。 后端是真实操作集群的服务前端用来展示页面的让我们更加直观地去操作我们的集群。 我们的前后端服务都是部署在K8S之上的因为我们得项目是针对云原生去设计的所以它会依赖K8S的一些资源比如它使用了K8S的存储我们没有用单独的数据库去存数据我们把K8S当做一个存储的组件因为K8S已经满足我们得要求了不用去专门维护一个数据库。不是用docker去启动。我们要部署在K8S之上 所以我们有个InCluster这个集群。我们得后端和前端代码都部署在这个集群之上然后这两个前后端服务去管理其他的K8S集群 我们这个InCluster集群的网络要和其他被管理集群的网络要通的一般是6443端口如果是高可用集群有个LB的地址。要能通信。
4. 涉及到的技术栈
Golang Vue K8s Git Gin JWT WebSocket Vue Router Axios Pinia Vite HTML CSS JavaScript
5. 前后端分离域名访问路由设计 我们前端和后端项目是用两个deployment去部署的也就是说会用到两个pod去启动我们给这个项目要配置一个域名比如我们配置kubeeasy.com。我们访问这个域名的时候就能打开这个管理系统的首页 然后可以在页面上点击操作调用后端去操作我们得K8S资源这个时候需要两个路径根路径是指向前端的调用页面。前端通过axios去调用后端接口后端接口路径就是域名加上api为前缀的路径。
1. 前端路由设计 2. 后端路由设计 6. 前后端数据交互模型设计–后端返回数据
后端返回的是json串一般包含三个字段status message data 无数据返回data为空。 一条数据使用data下面的 item。返回多条数据使用data下面的items
7. 前端提交数据规范
clusterId 表示操作哪个K8S集群namespace 哪个名称空间
8. 元数据存储的设计
1. 哪些数据需要存储 2. 数据存储到哪里
我们把我们的服务部署在了InCluster这个K8S集群之中K8S本身可以作为存储的K8S把数据存储到了etcd所以我们可以通过K8S把数据存储在etcd之中我们可以用secret或者configmap存储到etcd数据库中 存储数据能不用第三方组件就不用第三方组件因为第三方组件的故障会带来隐患。K8S一般是高可用集群比较可靠。我们也不可能为了存储一些配置信息就去搭建一个高可用的mysql集群造成了资源浪费。 如果要做多用户权限分配等这个时候可能用mysql比较好一些。一般情况下我们将配置信息存储到secret中就可以了
3. 元数据的存储格式设计
我们把每个集群的名称作为集群的ID最好是英文的。集群的其他一些配置信息比如集群别名位置等信息可以放置到annotations里面去。 最重要的信息 kubeconfig要放到data中。 我们可以添加个labelsmetadatatrue 利用K8S的查询机制查询出来具有这个标签的所有的secret。