当前位置:   article > 正文

openstack+docker设计与实现CI/CD(持续集成/持续交付)_openstack heat dockerfile

openstack heat dockerfile

老规矩我们先了解下相关概念:

本次主要说明下基于docker容器技术的openstack研发、测试、运维及其相关的CI/CD、devops等活动。

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

docker的生命周期,一般分为:

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

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

  • docker容器是把应用程序和环境打包在一起,所以是一次构建,处处运行。docker最大的好处就是标准化了应用交付,只要系统能运行docker,就能无差别的运行应用。
    • docker镜像统一封装了软件服务及其依赖环境,可以让镜像成为一个标准的软件交付物。
    • 容器比虚拟机运行效率更高,在开发测试工作日益繁重的CI/CD环境中,Job(定时执行)任务运行的速度是至关重要的。
    • 通过容器云平台如kubernetes,可以方便的实施集群和容器管理。openstack和docker集成现状:
    • OK,首先docker是一种集namespace、cgroups等技术于一体的容器技术,可以将应用和环境等进行打包。形成一个独立且隔离的环境,让每个应用彼此相互隔离,并在同一台主机上同时运行多个应用,进行更细粒度的资源管理。

开源软件项目介绍:

  1. kubernetes:

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

pods:每个pod都是一个容器集合并部署在同一台主机上,共享IP和存储空间,比如讲apache、Redis之类的应用分为一个容器集合。
labels:提供服务标签,方便pod容器之间的协调作用。

2.docker compose:

docker compute是容器编排工具,让用户可以自定义容器的镜像、容器之间的依赖关系等。定义好这些信息后,只需要一条命令就可以按照顺序启动容器,然后整个应用就部署好了。

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占用资源少,在单机服务器上部署成百上千个容器也是可能的,panamax提供了人性化的web管理界面用来安装软件,让部署变的更简单。并且,panamax还提供了丰富的容器模板,让在线创建服务成为可能,所有操作都可以在web界面上完成。

9、tutum:

tutum提供了一套非常友好的dashboard界面,支持创建docker容器的应用。

10、harbor:

使用harbor可以管理大规模的docker镜像,以及基于同步复制功能的HA主备高可用性、细粒度的角色权限和项目管理。除此之外,还有一些docker性能监控工具,如docker status、CAdvisor、Scoun、datadog以及sensu等。

11、openstack集成docker项目:

openstack社区为了集成docker做了很多努力,如开发了nova+docker driver、heat+docker driver等模块,但都存在诸多不足。为了更好地与docker集成,社区陆续开发了几个新项目,如magnum、Murano、solum和kolla等。

目前,kolla是openstack集成docker最火热的一个项目,将大部分的openstack服务docker容器化,便于安装部署升级。其他的如magnum,则提供了CaaS,solum、Murano和docker有些关系。但solum更偏重于CI/CD,可以理解为一个应用软件的持续集成/持续交付环境,Murano是一个app store,solum可以将开发的应用发布到Murano中。

基于openstack+docker设计CI/CD:

目前,在docker容器中部署和运行openstack云计算服务,以成为主流趋势之一。设计与实现基于openstack云计算+docker容器技术的CI/CD服务,其核心是在openstack IaaS云计算平台上创建虚拟机,实现基于openstack研发测试业务背景下的CI/CD服务。

这里涉及到三个重要部分:
一是基于原生openstack研发的云计算产品,以及基于openstack基础设施平台构建的CI/CD应用
二是包括诸如Jenkins、citlab、gerrit、harbor等系统在内的CI/CD应用
三是将openstack每个服务容器化,并使用kolla方式部署。

注:
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能经济界;

基于云服务的CI/CD服务,可以实现弹性伸缩和横向扩展,首先在物理服务器上搭建好openstack IaaS云平台,以及创建数台可用的虚拟机等,后续使用。

其他

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/342967
推荐阅读
相关标签
  

闽ICP备14008679号