k8s+docker+Jenkins实现可持续集成、容器服务监控、平滑增加容器等功能
在项目日常开发过程中,我们需要可持续的集成项目。如果不是可持续集成的话,往往有新版本的时候才会在测试环境中重新部署。如果项目对迭代速度要求比较高的情况下,我们需要每次开发新增一个接口的时候,就马上把测试环境的代码也一样同步更新,然后重新部署。基于这种模式下面的话,我们不能再向以前传统的模式,将打包好的war或者jar上传到服务器种,然后重新部署运行。所以今天给大家介绍另外的一种模式。应用场景:问题
·
在项目日常开发过程中,我们需要可持续的集成项目。如果不是可持续集成的话,往往有新版本的时候才会在测试环境中重新部署。如果项目对迭代速度要求比较高的情况下,我们需要每次开发新增一个接口的时候,就马上把测试环境的代码也一样同步更新,然后重新部署。基于这种模式下面的话,我们不能再向以前传统的模式,将打包好的war或者jar上传到服务器种,然后重新部署运行。所以今天给大家介绍另外的一种模式。
应用场景:
问题:项目分为app和后台两种,为了保证再同一个环境下面测试,所以不可能链接开发本地服务进行测试,所以需要搭建一个测试环境,供app进行开发测试。这个时候就有一个问题,如果开发新增加功能或者app调试的时候发现问题,这个时候就需要提交新的代码或者修复bug,然后重新发布到测试环境中去。但是后台人员又不能进入Linux服务器中,只能通过Linux运维人员来重新部署,这样的效率就会极低。
方案:基于这种模式下面的,我们引入了
Jenkins工具,通过Jenkins来拉取svn/git代码到服务器中,再Jenkins中编写Linux运行脚本,通过脚本我们就可以对代码进行编译运行,然后重新发布到服务器中运行。后端人员也不需要通知Linux运维人员来执行这个操作,直接再Jenkins的控制台就可以执行了。
应用场景升级:
场景升级一:
问题:随着开发的进行,项目越来越大,项目的模块也越来越多,每一次编译的时间也越来越久。可是对项目而已,我们修改的接口只是其中一个模块的代码,我们当然不希望因为修改一个模块的代码就重新部署所有模块项目。我们希望可以针对于修改的模块进行单独的部署,这样不仅可以提高部署的效率,也会让部署的时间大大的减少。
方案:基于上面的问题,我们引入了
docker,然后修改Jenkins相关的Linux脚本。将项目按照模块来划分,每一个项目都可以单独来构建,各个项目之间没有必然的依赖。每个模块都会被构建为一个
docker镜像,然后进行部署。这样我们就可以做到,针对于具体的模块来单独的部署,而且不会对其它模块产生任务影响。
场景升级二:
问题:随着项目逐步进行,某一个模块的项目可能需要部署多个的应用,某一些模块需要少部署一些。用专业术语来说就是平滑的新增或者减少模块服务数量,这样有一个前提就是,我们不能关闭所有服务然后重新初始化部署应用。也就是在线上就要做到这一点。还有就是随着模块的增加,服务数量越来越多,我们需要有一个监控平台来监控这些服务的运行情况。
方案:基于上面的问题,我们引入了
kubernetes(简称k8s),通过k8s我们可以在k8s给我们提供一个管理平台上面就可以做到上面的这些需求,比如关闭某个服务,添加某个服务、监控服务的运行状态等等之类的。
下面就是
k8s+docker+Jenkins整个模型的流程图,如下所示:
总体流程:
- 在开发机开发代码后提交到gitlab
- 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry
- 之后将在k8s-master上执行rc、service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器
想要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~
更多推荐
已为社区贡献3条内容
所有评论(0)