Kolla 提供了生产级别的 OpenStack Service Containers。 基于社区的最佳实践 , 提供了 更好 , 更快 , 更可靠的 , 操作 OpenStack 的部署工具 。

解决的问题

  • 平滑的升级 / 回滚 OpenStack
  • 隔离 OpenStack 的不同组件的依赖环境 。 尤其是那些使用同一模块不同版本的情况 。
  • 保证环境的一致性 。 解决由于安装时间不同 , 造成的包版本不一致的情况 。
  • 支持多种安装源 : 源代码安装 ,CentOS binary 安装等 。 可以替代掉 devstack。

其实这些问题只要是由 Docker 来解决的 。 这也是 Kolla 使用 Docker 的原因 。

架构

kolla 代码在 https://github.com/openstack/kolla。 现在 Kolla 主要分成两个部分 。

  • Docker Images Build
  • Ansible 部署 ( 这部分将来会迁移到 kolla-ansible 项目 )

Docker Image Build

主要使用 Jinja2 模板生成 Dockerfile 文件 。 如果是源代码安装 , 还会把代码下载好 。 之后会通过 Docker-py 驱动 Docker 进行镜像构建 。 构建完成 , 还可以根据配置将镜像推送的指定的 Registry 服务器 。

现在支持的不同的 Linux 发行版本 (Redhat 系和 Debian 系 ) 和不同的 OpenStack 安装包 ( 源代码和二进制包 )

下图是现在所有镜像的依赖关系 。

Ansible 部署

提供一个完整的 Ansible Playbook, 来部署 Docker 的镜像 。 并提供 all-in-one 和 multihost 的环境

使用到的技术

  • Docker/LXC
  • Ansible
  • Python
    • docker-py
    • Jinja2

完毕。