一.Kolla簡介
kolla項目起源於TripleO項目,聚焦於使用docker容器部署OpenStack服務。該項目由Cisco於2014年9月提出,是OpenStack 社區Big Tent開發模式下的孵化項目。
在國內一些互聯網資料上,常看到關於kolla是TripleO項目的一部分這樣的描述,其實是不準確的。真實的是,Kolla項目起源於Tripleo項目,時至今日,與它沒有任何關係(雖然它們的目標都是做自動化部署,但走的道路卻不同)。比之於Tripleo和其他部署工具,Kolla走的是docker容器部署路線。
當前Kolla項目在Kollaglue repo提供了以下服務的docker鏡像。
# docker search kollaglue
代碼目錄結構
Kolla的優勢和使用場景,體現在如下幾個方面:
-
原子性的升級或者回退OpenStack部署;
-
基於組件升級OpenStack;
-
基於組件回退OpenStack;
這裡,我們予以拆分來理解:
Kolla的最終目標是為OpenStack的每一個服務都創建一個對應的Docker Image,通過Docker Image將升級的粒度減小到Service級別,從而使升級時,對OpenStack影響能達到最小,並且一旦升級失敗,也很容易回滾。升級只需要三步:Pull新版本的容器鏡像,停止老版本的容器服務,然後啟動新版本容器。回滾也不需要重新安裝包了,直接啟動老版本容器服務就行,非常方便。
Kolla是通過Docker Compose來部署OpenStack集群的,現在主要是針對裸機部署的,所以在部署Docker Container時,默認的網路配置都是Host模式。
首先,只需要通過一個命令就可以把管理節點部署完成,這個命令是調用Docker Compose來部署OpenStack的所有服務,然後我們可以在每一個計算節點上通過Docker Compose安裝計算節點需要的服務,就能部署一個OpenStack集群。因為Kolla的Docker Image粒度很小,它針對每個OpenStack服務都有特定的Image,所以我們也可以通過Docker Run來操作某個具體的OpenStack服務。
要想對OpenStack Big Tent開發模式下的Kolla項目(孵化中)有一個整體性的認識,其GitHub代碼庫上的README.rst文件值得一讀。
Kolla使用到的技術如下:
-
Docker
-
Ansible
-
Python
-
docker-py
-
Jinja2
Kolla 目前使用到的部署工具包括docker和ansible,使用 heat 來編排 Kolla 集群。由此可見,要搞懂Kolla,看來得同時學會Docker、Ansible和Heat等、理解OpenStack部署的架構等等,難度不小。
二. 如何與OpenStack社區溝通
-
每周Kolla小組會議:Wednesdays at 16:30 UTC #openstack-meeting-4.
-
IRC:#kolla
-
Email:[email protected]
-
PTL: Steven Dake(Cisco)
具體有關Kolla的信息,可以閱讀這裡:
Wiki:https://wiki.openstack.org/wiki/Meetings/Kolla
governance :http://governance.openstack.org/reference/projects/kolla.html
社區Commit參與情況:
三.源碼淺析
從代碼庫中的README.rst文件中,我們可以得知每個目錄分別代表的是什麼含義。
1.源碼目錄概要:
-
ansible – Contains Ansible playbooks to deploy Kolla in Docker containers.
-
demos – Contains a few demos to use with Kolla.
-
dev/heat – Contains an OpenStack-Heat based development environment.
-
dev/vagrant – Contains a vagrant VirtualBox/Libvirt based development environment.
-
doc – Contains documentation.
-
etc – Contains a reference etc directory structure which requires configuration of a small number of configuration variables to achieve a working All-in-One (AIO) deployment.
-
docker – Contains jinja2 templates for the docker build system.
-
tools – Contains tools for interacting with Kolla.
-
specs – Contains the Kolla communities key arguments about architectural shifts in the code base.
-
tests – Contains functional testing tools.
2.setup.cfg入口文件
還是老生常談,當我閱讀某一個新項目的源碼時,我總是會首先去看它的setup.cfg文件。因為它是一個項目的入口文件。
選取部分如下所示:
[files]
packages = //包名
kolla
data_files = //pbr指定的數據文件
share/kolla/ansible = ansible/*
share/kolla/devenv = devenv/*
share/kolla/docker = docker/*
share/kolla/doc = doc/*
share/kolla/etc_examples = etc/*
share/kolla/vagrant = vagrant/*
share/kolla = tools/init-runonce
share/kolla = tools/openrc-example
share/kolla = setup.cfg
scripts =
tools/kolla-ansible //該腳本通過ansible與koll進行交互。使用命令為:ansible-playbook -i $INVENTORY $EXTRA_OPTS
$PLAYBOOK
[entry_points]
console_scripts =
kolla-build = kolla.cmd.build:main //kolla程序的main主函數
oslo.config.opts = //oslo.config通用庫用於解析命令行和配置文件中的配置選項
kolla = kolla.opts:list_opts //字符串列表類型
[global]
setup-hooks =
pbr.hooks.setup_hook
4.Kolla架構
-
Kolla項目的HA架構,如下圖所示,大家應該一看就明白吧。是的,正如其他OpenStack項目一樣,對於MySQL的HA方案,默認採用的均是Galera。 源碼路徑:specs/ha.svg
-
Kolla節點的網路架構,如下圖所示。Kolla節點有2張網卡(eth0 IP由DHCP分配,用於內網使用;eth1 IP手動配置,用於外網使用,2個網段均和Neutron Router交互)。源碼路徑:doc/kollanet.png
下一篇中,我們將講解有關Kolla的部署和Ansible的Web管理等。
作者簡介:徐超,OpenStack工程師,個人傾向於研究CI-CT-CD-CD。
關於作者:
CSDN精彩內容每日推薦。我們關注IT產品研發背後的那些人、技術和故事。
微信號:CSDNnews