对话普元王海龙:如何用DevOps开发DevOps

记者:魏伟([email protected]
编辑:周建丁([email protected]

容器技术圈的朋友经常会为Kubernetes、Mesos以及Swarm等容器编排技术的优劣争论不休,其实,企业在选择开源技术的时候,应当从功能、开源项目的运作模式/产业背景、生态环境等方面,结合企业的实际需求综合考虑。在本文中,王海龙将会分享普元在综合考虑各种因素后,为什么选择了Kubernetes作为普元数字化企业云平台的微服务治理框架。针对普元本身在实践Kubernetes过程中,经历过哪些通用的技术难点,王海龙也做出了细致的分享并且给出了他们的解决方案。

另外,这两年随着云计算、容器/Docker、微服务、敏捷等相关概念和技术的成熟发展,DevOps也越来越火,被越来越多的企业所认可。未来很长一段时间内,DevOps都将会是一种潮流,它将持续颠覆IT人的角色,重构企业IT组织架构。普元数字化企业云平台产品将会打通需求、设计、开发、测试、预发、生产、运营七大关键环节、涵盖企业IT全生命周期,而DevOps也将是该平台的核心之一。

针对上述种种,7月5日晚上8点,普元信息高级研发工程师王海龙还将来到CSDN直播间为大家分享一场“用DevOps开发DevOps实战”的公开课(报名参加:http://edu.csdn.net/huiyiCourse/detail/138),对DevOps是如何在企业中实施的、有意愿将DevOps引入到自己企业IT的同学都可以听一听。以下是CSDN针对容器、DevOps对王海龙的专访。

嘉宾简介:

王海龙,普元信息技术股份有限公司的高级研发工程师,同时兼任普元数字化云平台运维组组长。目前主要关注的是云计算、DevOps领域。

对话普元王海龙:如何用DevOps开发DevOps_第1张图片

CSDN:目前你负责普元哪些产品线?这些产品线中,Devops在其中扮演什么哪些角色?

王海龙:目前我负责普元数字化企业云平台产品线。数字化企业云平台产品线的核心即DevOps。但是DevOps只是一个开始,完整的企业架构云平台将会打通需求、设计、开发、测试、预发、生产、运营七大关键环节、涵盖企业IT全生命周期。

CSDN:“用DevOps开发DevOps实战”将分享哪些主要内容,哪些听众应该了解?

王海龙:有句经典的话大家肯定都知道:“吃自己的狗粮”。4月底,普元数字化企业云平台The Platform 0.1.0版本发布。

有了这个平台,一方面本着节约自己开发运维成本的目标,另一方面也为了用自己的产品验证自己的设计,弥补产品在设计过程中的不足,缩短产品优化、反馈的周期。于是0.2版本的开发全部基于0.1版本。

在0.1版本上创建各领域系统,通过0.1版本的数字化企业云平台去管理0.2版本的编译、打包、部署等过程。在这个过程中,我们遇到了很多坑,也正如上文所说,发现了0.1版本的很多不足,从而对这些不足进行改造。

“用DevOps开发DevOps实战”分享的便是这个“吃自己狗粮的过程”。对DevOps过程感兴趣的、对DevOps是如何在企业中实施感兴趣的、有意愿将DevOps引入到自己企业IT的同学都可以听一听,欢迎拍砖。

CSDN:目前大家对Kubernetes、Mesos以及Swarm等容器编排工具孰优孰劣争论不休,从你的角度看,如何选择?

王海龙:在选择开源技术的时候,应当从功能、开源项目的运作模式/产业背景、生态环境等方面,结合企业的实际需求综合考虑。就容器编排能力而言,Kubernetes、Mesos、Swarm无疑都是满足的,但是在结合这几点要素对比后,普元最终选择了Kubernetes框架。细分原因如下:

  1. Kubernetes提供了从资源调度,到服务发放、变更、退休,到网络管理的全方位能力,功能比较完整,不需要再依赖别的框架。
  2. 我们关注的一些重要功能,例如CustomMetrics、Multi-zone、Multi-scheduler、Node affinity等,都在Kubernetes的Roadmap之中,结合第一点,Kubernetes的整体功能和未来发展还是很符和我们的需求的。
  3. Kubernetes代码控制权在Google手上,所以有很明确的功能发展目标,不会出现各代码提供商为了做什么功能而“扯皮”的情况。
  4. 容器的两个核心技术之一Cgroups发起者就是Google,Kubernetes就是源自于Google内部使用、经过多年锤炼的集群容器管理系统Borg,所以Kubernetes的架构是经过了多年进化的,比较成熟、架构简洁、适应性强而且极具扩展性。
  5. 技术的生态圈是一个很重要的考核要素。Kubernetes首先是和CoreOS联合,形成名为Tectonic的端到端容器管理解决方案,而CoreOS又是etcd、Rkt、Fleet、Flannel等一系列优秀开源项目的领头羊,这些开源项目彼此之间做到了很好的对接,避免了使用开源软件时经常碰到的“裁剪”问题。

综上,Kubernetes在技术/功能、运作模式、产业背景、生态等四个维度有着较为均衡的优势,所以我们选择Kubernetes作为普元数字化云平台的微服务治理框架。当然,对于不同企业,还是要结合自身的实际需求来综合考量。

CSDN:我们知道普元在Kubernetes的使用方面有着很多的经验,能分享下你们在实践k8s过程中一些通用的技术难点吗?有没有一些好的解决方案?

王海龙:普元在Kubernetes使用过程中,也遇到了不少问题。简要归纳大致有如下几个比较通用的技术难点:

  1. 网络规划与配置(多种方案,怎么选择,怎么部署)
    目前Kubernetes网络的方案有多种,包括直接路由、Flannel、Open vSwitch和IPVLAN等。

    • 我们选择的方案是Flannel。考虑的因素:一是Flannel的方案足以支撑我们的需求,二是我们的基础操作系统是Coreos,而Flannel又是Coreos团队针对Kubernetes设计的。
    • IPVLAN是Linux内核中的一个驱动,有了它,无需使用桥接接口,就可以创建拥有唯一IP地址的虚拟网络接口。IPVLAN是一个相对较新的解决方案,现在还没有能完成上述过程的自动化工具。如果集群的机器和容器比较多,部署IPVLAN的难度不小,不容易设置。
  2. 数据持久化
    我们目前暂时是使用的挂载NFS卷来实现数据持久化。后面将会集成Ceph,使用Ceph的块存储来做为Pod的持久化卷保存数据。

  3. 负载均衡
    Kubernetes在自行部署时不提供负载均衡服务,此服务只在GCE/AWS/Aruze等云服务商提供,为Pod提供高可用。如在创建时kind定义为rc并指定数量>2时,在创建服务时Service定为负载均衡服务,那么我们在访问应用的使用的是外部地址,而不是通过端口映射的方式访问。
    但是非上述三大云服务商是没有这个功能的,在有多个应用系统相互调用的情况下,每次部署后外部端口都会变化,外部URL自然也会跟着变化。变更相当麻烦。
    我们采取的方案是外置一个负载均衡,并且使用Redis来进行各个容器的IP端口域名的管理,从而每个产品对外呈现不变的域名。

CSDN:能否推荐一些比较好的DevOps工具?你觉得信息安全和QA如何融入DevOps的工作流?

王海龙:容器技术如Kubernetes/mesos/docker;自动化与管理工具如chef/puppet/saltstack;监控相关技术如influxdb/grafana。可以参考下这篇文章:http://blog.csdn.net/DozingOnion/article/details/51499062

信息安全和QA实际上是DevOps中不可或缺的两个环节。DevOps并非只有开发和运维两个环节,而是包含了从开发到运维的所有环节。在测试阶段,测试的结果会生成报告反馈到QA,由QA出具相关报告,来判定系统质量是否合格。信息安全则是独立于主流程之外,在测试阶段,进行检测应用系统的安全性,并出具安全报告。

CSDN:您认为开发人员和运维人员应该如何去落实DevOps?需要具备哪些条件?

王海龙:在落实DevOps的过程中,各个IT角色最重要的是相互协作、相互沟通,打破之间的屏障,给别人、给自己足够的反馈信息,使每一个角色都拥有一个快速反馈回路,IT生命周期的各个环节的输入输出物要能达成一致,保障DevOps平台可以迅速发现并修复任何产品问题。不止是开发和运维人员,企业的DevOps平台实施脱离不了开发人员、测试人员、运维人员、QA、信息安全人员等IT各个角色的共同参与。

企业落实DevOps需要具备的条件如下:

  • 技术条件:
    • 基础设施:传统IaaS与容器的统一管理
    • 基础服务:CI/CD,统一认证,监控与计量,调度与编排,配置管理等等
  • 团队条件:
    • 学习型组织,能力互补
    • 沟通文化等

CSDN:DevOps在企业上云和传统企业转型过程中的会带来哪些作用?

王海龙: DevOps的核心价值,是能够帮助企业快速交付变更,以便于快速响应企业对于市场的变化、用户的需求。DevOps可以极大地提升企业IT敏捷性,无论是代码部署的频率还是功能交付的速度相比于传统的流程都要快的多,同时还有着更高的变更成功率。这保证了产品功能能更快的进入市场,提升客户满意度、市场份额、员工生产力以及工作的成就感。

CSDN:您对DevOps的未来如何看,对企业在实施DevOps的过程中有哪些建议?

王海龙:其实DevOps的概念已经提了好多年,但在国内一直没有真正的火起来,这两年随着云计算、容器/Docker、微服务、敏捷等相关概念和技术的成熟发展,DevOps也越来越火,被越来越多的企业所认可。未来DevOps将会在很长一段时间内都是一种潮流,它将持续颠覆IT人的角色,重构企业IT组织架构。不断精益优化企业IT生命周期,提升企业IT的敏捷性和可靠性。

DevOps更多的是把IT服务产品化的平台,企业中的任何一个IT能力,都应当能够在 DevOps中面向其用户提供自服务的能力。所以,企业在实施DevOps的过程中,还是要切合企业自身的战略规划、业务架构规划、业务目标、IT能力等实际情况,采取MVP(最小化可行产品)的原则,制定切合的DevOps发展计划。在使用的过程中,可以先选取几个试点产品(较典型的应用系统),通过对试点产品的全生命周期管理,来检查DevOps平台的不足并进行改进。最终全面推行DevOps平台。

你可能感兴趣的:(对话普元王海龙:如何用DevOps开发DevOps)