基于Docker下DevOps系统的设计与实现

2018-06-06 10:14刘安
电脑知识与技术 2018年7期

刘安

摘要:随着IT行业的迅猛发展,相关软件企业对于DevOps系统应用也在不断加深,但是传统的DevOps系统仍然存在一定的缺陷和不足。基于此,该文通过Docker的应用对DevOps系统构建的影响的分析,针对基于Docker下DevOps系统的设计与应用的设计、运作、应用三个方面进行深入的研究。

关键词:Docker;DevOps系统;etcd数据库集群

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)07-0069-01

研发团队和运维团队是IT部门的两大核心团队,两个团队的目标却存在一定的冲突:研发人员希望对常规软件迅速进行大面积推广,运维人员则更多的考虑产品的稳定性。为了维持两个团队的平衡,就需要采用现代化的手段来维持团队在目标确定中存在的分歧,因此需要通过DevOps系统进行干预。

1 Docker的应用对DevOps系统构建的影响

Docker是个开源平台,主要由Docker Hub注册服务器、容器引擎等几方面构成。从功能上来看,Docker Hub注册服务器能完成用户的相关数据操作,例如构镜像库数据库、数据的分享等;Docker的容器引擎能满足深层次的数据管理要求,例如可以让技术人员将应用打包到一个移植的容器内部,并通过Linux设备完成发布。利用Docker,能够实现各种软件的随处运行以及一次配置。

DevOps系统是一系列过程、系统和方法的统称,该系统的应用有利于促进软件工程的开发、加强质量保证部门和技术运营之间的沟通和整合。DevOps系统的核心理念是研发、运行、维护、质保各个团队之间的高效协作。

与传统的DevOps系统相比,应用Docker构建DevOps系统的优势主要有以下几点:

1)對研发、生产等环节完成标准化管理。在数据处理中,景象经常被看做是标准交付件,所以其各个编辑过程都能在容器内实现运行。

2)有效解决基础环境的架构异常问题。从Dev到Ops的过程中,产生阻力的主要原因是基础环境的多元化,Docker Engine的使用可以忽略基础环境的类型条件。不同的虚拟化类型、物理设备或者云计算平台,在Docker Engine的运行环境下最终都会提供以容器作为基础的服务。

3)方便构建、转移以及部署。能够完成标准化的镜像构建,在这个过程中,依靠分层机制来保证镜像构建效率。在操作中,应用容器仓库能够把成型的镜像转移到任何环境中,同时只需要把静态只读转变成动态可运行容器即可[1]。

2 基于Docker下DevOps系统的设计与应用

2.1设计

DevOps系统主要由etcd数据库集群、Kubernetes集群、GitLab、Web管理页面、统一集成编译、网络与域名系统(DNS)等九大模块组成。其中etcd数据库集群可以提供高可用配置的中心能力;Kubernetes集群负责Docker的集群管理和调度;GitLab可以对源码进行配置与管理;统一集成编译镜像可以对集成的环境进行统一配置,完成统一编译。

Docker下DevOps系统具体的设计思路为:

1)数据库集群。数据库集群设计必须要保证etcd数据库应用分布方式的完整性,一般采用分布式key-value存储的方法,这是因为这个方法能够为整个系统提供一个安全的储存服务,包括各种形式的插件配置储存等。

2)网络管理。网络部分的管理主要集中在服务容器、容器网路等多个方面,在网络管理实现过程中,主要利用Flannel插件在运行的每台主机上建立一个虚拟网卡,并运行Flannel插件服务,用以传输控制协议数据包,可以有效解决一些跨主机容器的网络通信问题,精简网络管理配置,实现容器间的连接;在DNS解析部分,应用Kube2sky插件对Kubernetes中的服务、端点及其相应的子节点变化进行控制,在必要情况下,将IP地址及其相应的DNS关系录入到数据库中,这样相关统模块就能对数据库中的相关数据做进一步的编辑处理。

3)镜像。Jenkins镜像应用于Jenkins服务的构建,对源代码进行构建编译;GitLab镜像应用于GitLab服务,对源代码进行管理;统一集成编译镜像是项目镜像的容器,其中具有镜像构建所需要的各种依赖,保证镜像构建过程中环境的同意,提升构建速度,摆脱额外依赖[2]。

2.2运作

编程思想在DevOps系统中的应用较为常见,该系统以Docker等技术为媒介,并依靠相应的技术流程得以实现,其具体的实现步骤为:

1)开发者把代码提交给源代码管理GitLab;2)GitLab借助Webhook通知Jenkins进行更新;3)Jenkins在GitLab下载最新的代码以及其他文件;4)Jenkins在云镜像服务的节点构建Docker镜像;5)Jenkins在云镜像服务的节点实例化Docker镜像,执行测试代码;6)一旦通过测试,Jenkins把Docker镜像推送到仓库;7)保证CDserver的持续发布,利用配置管理向测试、生产等环境推送相应的产品。

调查显示,2016年,38%的企业已经在使用DevOps,2017年超过70%的IT市场会将目光聚焦在DevOps技术及功能上。美团云从2015年开始构建Docker容器集群管理系统,提供对Docker容器的实例化、调度、运行、监控以及镜像托管等功能。两年的实战验证了Docker容器虚拟化技术在提高运维效率,降低IT成本等方面的价值。近日,美团云技术团队与金融科技企业买单侠的技术专家就Docker的应用进行了分享交流。基于美团云计算平台构建的Docker容器管理平台让美团点评的研发和运维人员通过自动化流程加强协作,加速落地了美团点评DevOps的实施,在面对日订单超1800万的业务压力时,为公司提升了IT运营效率并节省大量资源,真正实现了精细化运营。

2.3应用

假设一个软件企业越有100人,采用Java开发语言,以Tomcat为中间服务器,并采用相应的功能模块开展数据处理。

传统的DevOps系统持续集成流程如下:本地环境利用新的Java完成一个新的功能开发,在本地测试结束后电脑下线,另一个环节的测试部署服务器的研发人员提交的代码无法执行,功能一点就错,第三个环节的生产服务器与测试服务器不一致,导致运维部门需要重做测试部门的工作。受工作环境、运维环境等做种因素影响,整个处理过程的工作效率低。

相比之下,采用Docker下DevOps系统可以很好地解决上述问题。整个项目运行过程中设立一个项目构架师,研发人员、测试人员、运维人员的进度都直接反馈给项目构架师,一旦出现问题,可以及时调整,在提高工作效率的同时简化了工作流程。

4 结束语

综上所述,Docker的应用对DevOps系统构建具有积极的影响。Docker在DevOps系统的设计与应用中设计、运作、应用三个方面的融入,可以使得DevOps系统更加简洁、方便、快速。随着Docker等开源技术的逐渐成熟和广泛应用,DevOps系统构建已经不再是科研难题,未来DevOps系统必将越来越完善。

参考文献:

[1] 周振兴. 基于Docker和持续交付的项目管理系统设计与实现[D]. 大连:大连理工大学,2016.

[2] 孙庚泽. 基于Docker的混合云应用编排方案研究[D]. 西安:西安电子科技大学,2015.