我们使用云管理平台(以下简称CMP,Cloud Management Platform)管理公司内部资源,使得公司所有人员,都可以通过CMP提供的自服务门户(Self-Service Portal),完成计算/存储/网络等IaaS资源和软件应用自助申请,并且能够自助进行日常运维操作。
CMP平台准备工作
通过LDAP方式将公司AD账户导入CMP平台中,为开发、测试、售前售后团队创建不同的业务组和资源池,每个资源池给到不同的资源配额,做到资源合理分配和资源相互隔离。为每个业务组设定一个管理员,审批业务组成员的资源申请。
我们使用Shell、Python脚本或Ansible 配置管理工具将内部常用的一些软件及应用系统的安装过程进行封装,并发布到CMP平台中,提供标准化蓝图方便大家申请。
自服务自运维门户
在门户中,大家可以看到已经发布好的服务卡片,通过点击服务卡片即可完成IaaS资源或应用系统的自助申请,在平时的开发测试过程中,我们不再需关心底层复杂的系统或网络配置。
在门户中,大家也可以清晰地看到自己所管理的资源的性能情况,还可以简单便捷地完成一些日常的基础运维操作:重启、调整配置、添加逻辑卷、扩展逻辑卷等。此外,使用管理账号登录CMP管理平台,可以清晰地看到公司内部资源的总体使用情况。
总结与建议
在骞云科技的DevOps实践中,一方面,我们将GitLab、Gerrit、Jenkins、Ansible、JMeter、Robot Framework等成熟的开源工具开源技术和企业内部的云管理平台相结合,实现了较高程度的开发测试流程自动化,推动了产品的持续集成和持续交付,减少了大量的重复劳动,提高了开发测试效率。
另一方面,通过使用云管理平台,将复杂异构的IaaS资源服务化,降低了使用难度;结合业务部门需求合理划分资源,减少了资源浪费,加强了资源的有效隔离,避免了误操作;自服务自运维的模式,也极大地提升了公司整体研发效率。
我们的DevOps实践方案适用的场景非常多样,比如:弹性伸缩、迁移、负载均衡。在传统IT、金融、互联网、游戏等行业也具有普适性。
未来发展方向
在介绍Ansible自动化部署时有提到,我们的业务系统由20多个服务组成,符合服务化的架构设计,目前已经可以满足私有化的部署需求。随着新功能的不断引入,部分业务子系统复杂度和团队开发耦合度会逐渐升高,协作效率和部署效率会变得低下。另外,当前的软件架构和部署架构不能满足将来的SaaS化部署。所以,我们仍需要将服务进行更细粒度的拆分,逐步向微服务架构转变并使用容器化部署,进一步降低开发和部署成本。
Q&A
Q:你们的主要业务是什么?
A:我们专注于云管理领域,致力于IT云化转型。我们的核心产品SmartCMP云管理平台是以应用为核心的新一代云管理平台。SmartCMP平台能够统一管理异构云资源,并以国际领先的可视化应用蓝图建模技术为基础,实现IaaS/IaaS+/容器等的自动化交付和控制,并且能够对云的使用和成本进行追踪和优化。
Q:CMP和各个云平台打通都使用了平台的jar,并且需要各种资源生成,这个工作量也不小吧?并且如果api更新代码量也大吧
A:我们的核心业务就是做云管理平台,我们产品已经完成了对各个云平台的对接,主要调用各个云平台的API。公有云的API更新频率并不是很高,每当API有更新时,我们也及时去适配。
Q:CMP是如何实现与如阿里云这样的公有云打通的?
A:公有云都提供了REST API,并且提供Java语言和Python语言的SDK。
Q:你们的虚拟机都是提前创建好了吗?
A:我们的虚拟机都是根据需要,通过CMP即时创建和回收的。
Q:CMP管理平台是自己开发的吗?
A:CMP是我们自己的核心产品,所以肯定是自研的。
Q:请问贵司没有采用容器么?为什么还要大量写playboo k呢?直接j jenkin执行打包成镜像不就可以了吗?
A:目前我们主要是ToB的业务,项目交付以虚拟机部署为主,所以需要使用Ansible playbook做整个应用系统的安装部署。
Q:你们的虚拟机自动化创建使用的是kickstart吗?有使用Packer吗,想问下选择的原因。
A: 不是的。我们都是通过对接云平台的API进行虚机创建,如:vSphere,OpenStack,Aliyun等。
Q:Jenkins初次提交也能触发构建吗?每次自动化构建版本号是如何更新的呢?
A: 我们的项目代码具备构建条件后,才在Jenkins上创建了项目构建Job,所以并没有在初次提交时触发构建。每次构建的版本号由两部分组成,一部分是产品的Release大版本号,另一部分直接使用的Jenkins build number这个环境变量。
Q: 你们的生产环境部署是通过使用ansible部署服务,是否有考虑结合使用docker swarm 或者kubernates?
A: 目前我们主要是ToB的业务,目前还没有完成微服务架构的改造,所以还没有进行容器化部署。当然,将来我会考虑使用Kubernetes。
Q:CMP是java的么
A: CMP中的管理模块使用Java语言编写。其他模块也涉及Python语言。
Q:有了gerrit,为什么还要gitlab?gerrit也可以托管代码啊
A: 这个是有历史背景的,我们是先选择使用Gitlab做代码托管,后期才加入Gerrit做code review。Gerrit在代码review方面比Gitlab的merge request要方便许多,更适合企业内部使用。
Q:是否支持对华为fusion cloud6.3.1云平台的对接管理?有没有和计费系统对接的案例?实现类似阿里云等公有云这种在线订购交付
A:我们暂时还没有支持fusion cloud6.3.1云平台的对接管理。我们CMP实现了计量计费功能,对公有云、私有云、容器都可以统计费用明细,生成可视化费用分析视图。
Q:Jenkins构建项目,如何管理多项目的Jenkinsfile,如何解决slave maven构建缓存问题?如果多个项目依赖同一个common仓库,这次有一个项目和这个common项目有改动,都是在develop分支开发,构建顺序是怎样?如何让common不影响其它引用到它的仓库构建?
A:我们没有使用Jenkins file管理多个项目,我们通过创建Pipeline来实现代码构建。对于Java工程的maven构建,我们每次在构建前清理缓存。
Q:CMP系统,会涉及工单审批功能吗?能否介绍一下这块的实现呢?
A: CMP系统包含了工单审批功能。我们官网可以预约产品免费试用,您可以直接上手体验。
Q:能否提供一下嘉宾的联系方式
A: 我们也技术交流群(QQ):707214697。