正文
基于组件升级OpenStack。
基于组件回退OpenStack。
具体而言,Kolla的最终目标是为OpenStack的每一个服务都创建一个对应的Docker镜像,通过Docker镜像将升级的粒度减小到服务级别,从而在升级时对OpenStack的影响降到最小,并且一旦升级失败,也很容易回滚。升级只需要三步:拉取新版本的容器镜像,停止老版本的容器服务,启动新版本的容器。回滚也不需要重新安装包,直接启动老版本的容器服务就行,非常方便。
Kolla可以使用Ansible、Kubernetes或者Mesos来部署OpenStack环境,Kolla负责容器化OpenStack各个服务;后者则负责部署这些容器,搭建出一个可用的OpenStack环境。来实现基于Docker容器的OpenStack服务全生命周期管理,如安装、升级、回滚、迁移等。在部署Docker容器时,默认的网络配置都是Host模式。因为Kolla的Docker镜像粒度很小,它针对每个OpenStack服务都有特定的镜像,所以我们也可以通过Docker命令来操作某个具体的OpenStack服务。
Kolla项目,及其相关的其他项目,如下:
-
Kolla项目:负责docker build OpenStack每个服务,如nova-compute容器等;
-
Kolla-Ansible项目:使用Ansible部署这些容器,搭建OpenStack环境;
-
Kolla-Kubernetes项目:使用Kubernetes部署这些容器,搭建OpenStack环境;
-
Kolla-Mesos项目:使用Mesos部署这些容器,搭建OpenStack环境。
简言而之,Kolla就是OpenStack社区的一个用于docker build容器化OpenStack服务的项目,最后,使用其他的社区项目,即kolla-ansible或者kolla-kubernetes执行部署任务。
Kolla为OpenStack的部署提供了有效、快捷、方便、易于维护、方便版本更新与回退的方案。基于Docker容器部署和运维的OpenStack架构,如下图所示:
Kolla所涉及到的技术点,有:
-
Docker
-
Ansible
-
Python
-
docker-py
-
Jinja2
Kolla支持部署HA高可用性的OpenStack环境,如下图所示,大家应该一看就明白吧。是的,正如其他OpenStack HA部署方案一样,如MySQL采用的是Galera等。
目前,Kolla提供的镜像支持部署如下OpenStack项目,包括但不限于:
-
Aodh
-
Ceilometer
-
Cinder
-
Designate
-
Glance
-
Gnocchi
-
Heat
-
Horizon
-
Ironic
-
Keystone
-
Magnum
-
Mistral
-
Murano
-
Nova
-
Neutron
-
Swift
-
Tempest
-
Zaqar
以及这些基础设施组件:
Kolla的Docker镜像制作,支持红帽的RPM包,Ubuntu和Debian的Deb包,还能支持源码的方式。理论上源码制作的镜像,可以运行在所有的支持容器的操作系统上。
我们可以选择Ansible来做容器的管理,也可以选择Kubernetes或Mesos来管理。目前Ansible已经比较完善,Kubernetes和Mesos还在积极开发中。但我个人感觉,Kubernetes会是未来一段时间的新宠儿,但是它对使用/管理人员的要求会比较高。
Kolla解决的问题
过去,无论是个人还是公司尝试使用OpenStack,在安装和部署,都花费和消耗大量的精力。这其实也是影响OpenStack推广的一个重要障碍。如何让大家从部署的枷锁中解放出来,用好OpenStack,才能真正体现出OpenStack的价值。