|
|
| title |
contentList |
image |
| 背景介绍 |
| content |
| 早在 2020 年之前,公司 IT 团队规模比较小,开发还要兼职运维测试。发展初期,基本上由业务驱动开发。基于资源方面因素,所以在系统架构上首先是满足功能使用,快速开发推出产品,系统架构建设也是基于阿里云一步步从单体到多模块,再到微服务做演进。 |
|
| content |
| 公司初期业务方向是印刷类商品的私人订制,满足个性化的输出的移动端应用,配套生产的供应的订单管理系统,同时涉及到旅行行业,为旅行社提供定制线路设计的 SaaS 系统,模板海报的输出系统,以及图库等旅行社所需要的素材资源。 |
|
|
https://pek3b.qingstor.com/kubesphere-community/images/tuling-2.png |
|
| title |
contentList |
image |
| 业务痛点 |
| content |
| 经过几年发展,业务系统服务开始增多,基础技术架构难以应付业务的快速变化,研发团队也亟需合理的开发流程来支持后续管理。我们将主要面临困难进行了梳理,大致有以下几点: |
|
| content |
| 开发环境和生产环境不一致:在项目迭代过程中,有时出现开发环境和生产环境配置不一致的问题,导致生产系统和业务问题不一致; |
|
| content |
| 无统一发布管理系统:初期由于各方面管理粗犷,缺乏自动化构建系统,版本功能完后,开发需要专门手动编译,打包上线发布,过程复杂还不好管理; |
|
| content |
| 资源协调:虽然业务系统已经采用 SpringCloud 整体微服务化,但各个服务资源的分配却无法协调。印刷服务在生成印刷文件时需要占用系统资源比普通业务系统高几倍,但又不是实时需要。之前都是专门用一台机器来做,但其实这种不太灵活。所以亟需能自动扩缩容的方案。 |
|
|
|
|
| title |
contentList |
image |
| 方案选型 |
| content |
| 基于上述的痛点,结合自身业务系统,准备进行容器化改造。 |
|
| content |
| 最开始接触 Kubernetes 时了解到官方提供的管理平台,通过调研和尝试了下后发现它只是管理 Kubernetes 容器的基本信息,并不是简单将业务放上去就能开箱即用,而涉及业务上的日志平台,监控系统,链路最终等基础运维体系还需自己去引入管理,最后还是通过朋友公司他们的一些经验建议使用一些集成的平台解决方案,类似 Rancher, KubeSphere 等。 |
|
| content |
| 经过对比后决定采用 KubeSphere,主要基于以下几点: |
|
| content |
| Kubernetes 这块全新的知识体系要掌握达到生产落地学习时间成本较高,对于我们应用性企业需要的是能简单上手的产品; |
|
| content |
| Rancher 侧重于运维管理,学习成本相对较高;KubeSphere 偏向与业务应用为中心,更符合我们公司情况; |
|
| content |
| Rancher 需要自己部署 Jenkins 等插件;KubeSphere 在一些组件整合上做的较好,比如 DevOps 能做到开箱即用。而发布部署是我们目前最迫切需要的; |
|
| content |
| KubeSphere 是由国内青云科技推出的产品,使用更符合国人习惯,而且完全开源。 |
|
|
https://pek3b.qingstor.com/kubesphere-community/images/tuling-5.jpeg |
|
|
|
|
|
|
|
| title |
contentList |
image |
|
|
|
| content |
| 系统环境主要是 Kubernetes 搭建,这里主要考虑存储和网络选型。 |
|
| content |
| 存储:最开始考虑使用 Ceph,搭建 demo 使用后发现,如果和 Kubernetes 搭建于同一集群环境,对资源还是有一定消耗。基于目前业务设计(基本上没有有状态服务需要涉及)、以及当前业务体量,最终采用相对轻量的 NFS 共享盘方式。 |
|
| content |
| 网络:Kubernetes 主流的网络插件目前主要有 Calico 和 Flannel,我们参考社区的经验,最终选择了 Calico。 |
|
|
|
|
|
|
|
|
|
|
|
|
| title |
contentList |
image |
|
|
|
| content |
| CI/CD 发布流程是这次改造的重点。 |
|
| content |
| DevOps 项目是 KubeSphere 中的一个可插拔组件,提供了基于 Jenkins 的 CI/CD 流水线,支持自动化工作流,包括 Binary-to-Image (B2I) 和 Source-to-Image (S2I) 等。 |
|
| content |
| KubeSphere DevOps 提供了开箱即用的 CI/CD 流水线,并通过图形化方式降低了学习门槛,我们就直接对官网的示例进行改造,采用配置文件基于流水线 Pipleline 构建和发布。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| type |
contentList |
| 1 |
| content |
| 降低了企业容器化改造门槛以及运维成本 |
|
|
|
|
|
|
|
|
|
| type |
content |
author |
| 2 |
KubeSphere 帮助我们轻松实现业务系统容器化,在业务系统的运维上更加从容。 |
图菱科技 |
|
|
|