技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s( 二 )



技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s
本文插图

KubeSphere Console 在里面实现了一套技术组件和一些比较复杂的业务组件 。 比如我们的样式、按钮和容器表单 , 这些是在 KubeSphere 里进行组件化的实践 。 这是组的功能 , 加大我们开发周期 。

技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s
本文插图

这是容器组业务组件 , 它具有高内聚低耦合的特征 。 它输入的话只需要 labelSelector 进行筛选 。 筛选完之后可以输出关联、数据以及 Porter 里的容器信息 , 以及相关的监控数据 , 监听 websocket , 实时刷新列表 。 这样的组件可以在很多地方部署副本集 , 很轻松、很容易的复用 。
什么是状态管理?

技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s
本文插图

将组件和页面之间的状态统一管理起来 , 为什么要这样的状态管理?应用的状态影响着分布与许多组件之间 , 在大型应用里 , 这样的影响分布会让你的业务逻辑显得很混乱的状态 。 专门管理可以让数据流向变得清晰可循 , 可以让数据业务逻辑更容易进行复用 。 在 KubeSphere Console 里大概分为四层状态管理 , 在全局 Store 里进行全局 UI 管理 , websocket 实例 , 路由实例等 。
模块管理 , 它是在某一个模块进入时初始化 , 退出的时候进行销毁 。 我们在 KubeSphere Console 前面将业务划分为 DevOps、项目、企业空间等 , 每个模块进入时 , 状态管理是独自加载的 。 分层设计的话可以让页面数据流量显得更清晰 , 设计周期更加简单 。
接下来介绍 KubeSphere Console 测试化 。
技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s
本文插图

为什么要有测试?测试是功能交互技术的保障 。 在单元测试方面 , 我们采用 Jest+Enzyme 的框架保证技术组件和业务组件的功能正常 。 我们着重于边界情况的测试 , 以及针对相关的 Bug Reports 进行覆盖 。 然后是端到端测试 , 主要目的是为了保证 UI 功能交互和展示效果上的运行 。 我们在端到端的测试里 , 与真实客户端进行交互 , 在总体上可以保证整个业务板块功能的正常 。
3.展望
接下来我们一起探讨 KubeSphere Console 未来的展望 。 KubeSphere Console 将如何成长?我们考虑到以下三方面:可扩展性、可监测性和业务抽象 。

技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s
本文插图

什么是可扩展性?简单的说就是插件化 , 为什么要做这件事 。 不管是前端还是后端 , 只要业务功能持续增加 , 你的代码容量或者应用会变得庞大无比 。 进行差异化的改造要让核心模块保留 , 保留核心业务 。 其他业务功能以插件的形式加载进来 , 可以保证主体功能足够轻量 。 不同用户可以为自己专门的业务场景定制自己的插件 。 在部署运行时 , 整个系统看起来没那么多冗余的功能阻碍 。
【技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s】
技术编程|KubeSphere容器混合云,一个人也能轻松运维的K8s
本文插图

前端页面监测系统 , 为什么要做这样的功能?因为我们发现很多用户实际前端页面运行场景中经常发生一些错误 , 我们要帮忙解决时很难复现 。 监测系统可以帮助记录错误的发生 , 更容易让我们 Debug 。 主要包括异常监控、资源请求监控以及页面加载性能的监控 , 将监控信息、报错信息上传到特定的服务器上 , 有一个地方专门掌控前端的异常反馈 , 更容易帮助我们 Debug 。


推荐阅读