场景升级一:
问题:随着开发的进行,项目越来越大,项目的模块也越来越多,每一次编译的时间也越来越久。可是对项目而已,我们修改的接口只是其中一个模块的代码,我们当然不希望因为修改一个模块的代码就重新部署所有模块项目。我们希望可以针对于修改的模块进行单独的部署,这样不仅可以提高部署的效率,也会让部署的时间大大的减少。
方案:基于上面的问题,我们引入了 docker,然后修改Jenkins相关的Linux脚本。将项目按照模块来划分,每一个项目都可以单独来构建,各个项目之间没有必然的依赖。每个模块都会被构建为一个 docker镜像,然后进行部署。这样我们就可以做到,针对于具体的模块来单独的部署,而且不会对其它模块产生任务影响。
场景升级二:
问题:随着项目逐步进行,某一个模块的项目可能需要部署多个的应用,某一些模块需要少部署一些。用专业术语来说就是平滑的新增或者减少模块服务数量,这样有一个前提就是,我们不能关闭所有服务然后重新初始化部署应用。也就是在线上就要做到这一点。还有就是随着模块的增加,服务数量越来越多,我们需要有一个监控平台来监控这些服务的运行情况。
方案:基于上面的问题,我们引入了 kubernetes(简称k8s),通过k8s我们可以在k8s给我们提供一个管理平台上面就可以做到上面的这些需求,比如关闭某个服务,添加某个服务、监控服务的运行状态等等之类的。
下面就是 k8s+docker+Jenkins整个模型的流程图,如下所示: