基于OpenStack+Docker设计与实现CI/CD

本文所述内容的背景是,基于Docker容器技术的OpenStack研发、测试、运维及其相关的CI/CD、DevOps等活动。思想是相通的,读者可以取其可用部分用于自己的业务需求中。

IaaS云和容器云不是可有可无、相互竞争的关系,而是相互弥补彼此缺陷的关系。容器改变了应用部署和管理的模式,众所周知,IaaS云通过提供基本的计算、存储和网络来运行虚拟机(VM),在IaaS(基础设施即服务)之上,还有PaaS(平台即服务)、SaaS(软件即服务)、CaaS(容器即服务)。OpenStack作为一个IaaS云的基础设施管理平台,为用户提供了创建VM和其他资源的服务,至于具体怎么用这些虚拟机、怎么运行业务应用,如Hadoop大数据、Docker微服务、CI/CD工具链、Cloud Foundry等,用户自己可以按需使用。

Docker的整个生命周期阶段,主要分为:

  • Build——使用Dockerfile文件或手动方式生成镜像。
  • Push——将构建好的镜像上传到镜像仓库中。
  • Pull——从镜像仓库中拉取镜像到使用环境中。
  • Run——启动镜像为容器服务。
  • Stop/Remove——停止或删除容器、镜像。

Docker适用于CI/CD的场景,主要是基于:

  • Docker容器是把应用程序和环境打包在一起的,所以是一次构建,处处运行。比如,当开发人员变更代码后,测试人员和运维人员只需要执行停止旧容器、启动新容器这两个步骤即可。因此,Docker最大的好处就是标准化了应用交付,只要系统能运行Docker,就能无差别地运行应用。
  • Docker镜像统一封装了软件服务及其依赖环境,可以让镜像成为一个标准的软件交付物。
  • 容器比虚拟机运行效率更高,在开发测试工作日益繁重的CI/CD环境中,Job任务运行的速度是至关重要的。
  • 通过容器云平台如Kubernetes,可以方便地实施集群和容器管理。相关技术也日趋成熟,生态环境丰富。

不同于其他软件应用,OpenStack有着自身固有的特点,既有众多优势,也存在对研发测试带来的诸多挑战。如何运用有效的方法,才是解决问题的关键所在。

一、OpenStack和Docker集成现状

Docker是一种集Namespace、Cgroups等技术于一体的容器技术,可以将应用和环境等进行打包,形成一个独立且隔离的环境,让每个应用彼此相互隔离,并在同一台主机上同时运行多个应用,进行更细粒度的资源管理。Docker和VM(虚拟机)的区别如下图所示:

图片描述

工欲善其事,必先利其器。Docker是一种具体的容器技术,虽然以REST API形式提供服务,但在实际生产环境中管理大规模集群的Docker镜像和容器仍然是一个巨大的挑战。开源软件项目的成功往往根据其催生的生态系统来衡量,使其日臻完善。

1.Kubernetes

谈论Docker管理,自然不能不提及Kubernetes,这是谷歌开发的一款开源的Docker管理工具,用于跨主机集群部署容器。Kubernetes还提供了让容器彼此互通的方法,不需要手动开启网络端口或执行其他操作。它提出两个概念。

  • Pods:每个Pod都是一个容器集合并部署在同一台主机上,共享IP地址和存储空间,比如将Apache、Redis之类的应用分为一个容器集合。
  • Labels:提供服务标签,方便Pod容器之间的调用协作。

2.Docker Compose

Docker Compose 是容器编排工具,让用户可以自定义容器的镜像、容器之间的依赖关系等。定义好这些信息之后,只需要一条命令就可以按照顺序启动容器,然后整个应用就部署好了,这对于自动化来说是一个很好的进步。对于应用编排来说,Compose是一个非常不错的选择。

3.Docker Machine

Docker Machine是一个便捷的容器创建工具,即从0到1地安装Docker,极大地简化了安装过程。使用docker-machine create命令,参数-d指定虚拟化的驱动,即可在相应的平台上创建Docker。

4.Docker Swarm

Docker Swarm 是Docker的集群管理工具,能够通过Master/Slave 的方式管理跨主机的Docker,为Docker集群化部署提供了非常好的支持。

5.Docker Datacenter

Docker Datacenter 是Docker的自动化集群管理工具,并非第三方工具,它其实是一个基于Docker的管理平台。

6.Apache Mesos

Mesos的名气比较大,基于它可以做很好的扩展,开发个性化的Docker集群管理工具。

7.Marathon

Marathon是一个与Mesos结合在一起的Docker集群管理工具,支持在Mesos之外调度容器。

8.Panamax

在众多的集群管理工具面前,如何管理单机的Docker容器也是一个需要解决的问题。因为Docker占用资源少,在单机服务器上部署成百上千个容器也是可能的。Panamax提供了人性化的Web管理界面用来安装软件,让部署变得更简单。并且,Panamax还提供了丰富的容器模板,让在线创建服务成为可能。所有的操作都可以在Web界面上完成,开发者只需要关注开发应用即可。

9.Tutum

Tutum提供了一套非常友好的Dashboard界面,支持创建Docker容器的应用。

10.Harbor

使用Harbor可以管理大规模的Docker镜像,以及基于同步复制功能的HA主备高可用性、细粒度的角色权限和项目管理。

除此之外,还有一些Docker性能监控工具,如Docker Stats、CAdvisor、Scout、Data Dog以及Sensu等。

11.OpenStack集成Docker项目

OpenStack社区为了集成Docker做了很多努力,如开发了Nova+Docker Driver、Heat+Docker Driver等模块,但都存在诸多不足。为了能更好地与Docker集成,社区陆续开发了几个新项目,如Magnum、Murano、Solum和Kolla等。

目前,Kolla是OpenStack集成Docker最火热的一个项目,将大部分的OpenStack服务Docker容器化,便于安装部署升级。其他的如Magnum,则提供了CaaS(容器即服务ÿ

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值