Kolla 提供了生产级别的 OpenStack Service Containers。基于社区的最佳实践, 提供了更好、更快、更可靠的,操作 OpenStack 的部署工具。
解决的问题
平滑的升级 / 回滚 OpenStack
隔离 OpenStack 的不同组件的依赖环境。尤其是那些使用同一模块不同版本的情况。
保证环境的一致性。解决由于安装时间不同,造成的包版本不一致的情况。
支持多种安装源 : 源代码安装,CentOS binary 安装等。可以替代掉 devstack。
其实这些问题只要是由 Docker 来解决的。这也是 Kolla 使用 Docker 的原因。
架构
现在 Kolla 主要分成两个部分:
Docker Images Build
Ansible 部署 ( 这部分将来会迁移到 kolla-ansible 项目 )
Docker Image Build
主要使用 Jinja2 模板生成 Dockerfile 文件。如果是源代码安装,还会把代码下载好。之后会通过 Docker-py 驱动 Docker 进行镜像构建。构建完成,还可以根据配置将镜像推送的指定的 Registry 服务器。
现在支持的不同的 Linux 发行版本 (Redhat 系和 Debian 系 ) 和不同的 OpenStack 安装包 ( 源代码和二进制包 )
下图是现在所有镜像的依赖关系
- kolla-image
- data
- base
- ceph-base
- ceph-rgw
- ceph-osd
- ceph-mon
- openstack-base
- horizon
- keystone
- glance-base
- glance-api
- glance-registry
- cinder-base
- cinder-api
- cinder-backup
- cinder-volume
- cinder-scheduler
- swift-base
- swift-account-base
- swift-account-auditor
- swift-account-reaper
- swift-account-server
- swift-account-replicator
- swift-container-base
- swift-container-auditor
- swift-container-replicator
- swift-container-server
- swift-container-updater
- swift-proxy-server
- swift-object-base
- swift-object-auditor
- swift-object-expirer
- swift-object-replicator
- swift-object-server
- swift-object-updater
- swift-rsyncd
- nova-base
- nova-api
- nova-compute
- nova-compute-ironic
- nova-conductor
- nova-consoleauth
- nova-novncproxy
- nova-scheduler
- nova-spicehtml5proxy
- neutron-base
- neutron-server
- neutron-linuxbridge-agent
- neutron-agents
- neutron-openvswitch-agent
- aodh-base
- aodh-api
- aodh-expirer
- aodh-evaluator
- aodh-listener
- aodh-notifier
- gnocchi-base
- gnocchi-api
- gnocchi-statsd
- ceilometer-base
- ceilometer-api
- ceilometer-collector
- ceilometer-compute
- ceilometer-central
- ceilometer-notification
- heat-base
- heat-api
- heat-engine
- heat-api-cfn
- trove-base
- trova-api
- trove-guestagent
- trove-conductor
- trova-taskmanager
- designate-base
- designate-api
- designate-central
- designate-sink
- designate-mdns
- designate-poolmanager
- designate-backend-bind9
- ironic-base
- ironic-api
- ironic-conductor
- ironic-pxe
- ironic-discoverd
- magnum-base
- magnum-api
- magnum-conductor
- mistral-base
- mistral-api
- mistral-engine
- mistral-executor
- murano-base
- murano-api
- murano-engine
- tempest
- zaqar
- haproxy
- nova-libvirt
- mariadb
- mongodb
- rsyslog
- rabbitmq
- keepalived
- kolla-ansible
- memcached
- openvswitch-base
- openvswitch-db-server
- openvswitch-vswitchd
Ansible 部署
提供一个完整的 Ansible Playbook, 来部署 Docker 的镜像。并提供 all-in-one 和 multihost 的环境
使用到的技术
Docker/LXC
Ansible
Python