[Openstack](EN) Build kolla images using source
Update(2020.11.15): Add Victoria version. Rocky version also tested
Update(2020.11.15): Added Ubuntu content and changed to use Python3 and pip3
Update(2019.10.13): Add issue solving parts
Build openstack kolla image by using source
Environment and Prerequisite
- Linux base system(Done tests on Mac, Ubuntu 18.04.5 LTS and CentOS 7.6)
- Bash shell(/bin/bash)
- Docker
pip-> From January 1, 2020Python 2is no longer supported any more so avoid usingPython 2.X.X.- pip3
- Git
Kolla Image?
Kolla Image
- Kolla’s mission is to provide production-ready containers and deployment tools for operating OpenStack clouds.
Kolla Imagemeans containerized images of openstack components- Related projects are
Openstack HelmandKolla-ansible - Link: https://docs.openstack.org/kolla/latest/
How to build image
Before build!
- There are two ways to build kolla images. One is from
binaryand the other is fromsource. Default value setting isbinary. binarybuild images by using remote binary component file.sourcebuild images from source codes.- Below scenario introduce build from
sourceand build onlynovacomponent. - For using
source, we need each components source code files.(We will clone it from git repository) - Below scenario is tested on both Mac and CentOS-7.6
- In Ubuntu and CentOS, tested on
rootuser. - In MacOS, use
sudocommand. - When developing Kolla it can be useful to build images using files located in a local copy of Kolla. Use the
tools/build.pyscript instead ofkolla-buildcommand in all below instructions. - From January 1, 2020
Python 2is no longer supported any more so avoid usingPython 2.X.X. You can check it on here
0. Prerequisites
CentOS
- Install Docker(CentOS): https://docs.docker.com/install/linux/docker-ce/centos/
Install Python PIP: https://www.lesstif.com/pages/viewpage.action?pageId=22052913- Install Python3 and PIP3
- Install epel-release
- Install python-devel, git, python3, python-pip and gcc by using yum
sudo yum install epel-release -y
sudo yum install python-devel git python3 python-pip gcc -y
Ubuntu
- Install Docker(Ubuntu): https://docs.docker.com/engine/install/ubuntu/
- Install Python3 and PIP3
- Install git, python3, python3-pip, python-pip and gcc by using apt-get
sudo apt-get install git python3 python3-pip python-pip gcc -y
MacOS
- Install Docker(MacOS): https://docs.docker.com/docker-for-mac/install/
Install Python PIP: https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x- Install Python3 and PIP3
- Install Git
brew install git python3 -y
1. Clone kolla repository
- Clone kolla repository and switch to
stable/victoriabranch - This post will build
stable/victoriaversion images. - Also done test on
stable/rockyversion.
$ git clone https://github.com/openstack/kolla.git
$ cd kolla/
$ git checkout stable/victoria
2. Install needed packages
- You can use
kolla-buildcommand after installing kolla
# In kolla directory path
$ cd ..
$ pip3 install kolla/
Issue Solving - 1
- Upgrade pip version if there is error like below in CentOS
- After not using
pip(which used inPython 2), this issue not occurs.
...
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-GB1G0n/GitPython/
...
- Upgrade pip version
pip install --upgrade pip
Issue Solving - 2
- Remove yum package if there is error like below in CentOS
- After not using
pip(which used inPython 2), this issue not occurs.
...
ERROR: Cannot uninstall 'requests'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
...
- Remove yum package
$ rpm -qa | grep requests
$ yum remove python-requests-2.6.0-1.el7_1.noarch -y
3. Generate kolla-build.conf
$ pip3 install tox
$ cd kolla/
$ tox -e genconfig
...
genconfig: commands succeeded
congratulations :)
Issue Solving 1 - Python.h
- Install packages if there is error like below in CentOS
- After not using
pip(which used inPython 2), this issue not occurs.
...
configure: error: no acceptable C compiler found in $PATH
...
_posixsubprocess.c:16:20: fatal error: Python.h: No such file or directory
...
- Install
python-develandgcc
$ sudo yum install python-devel gcc -y
Issue Solving 2 - more_itertools
- Downgrade pip packagee if there is error like below in CentOS
- After not using
pip(which used inPython 2), this issue not occurs.
...
File "/usr/lib/python2.7/site-packages/more_itertools/more.py", line 340
def _collate(*iterables, key=lambda a: a, reverse=False):
^
SyntaxError: invalid syntax
...
- Downgrade version of
more-itertools
pip install more-itertools==5.0.0
4. Clone nova repository
- Clone nova repository and switch to
stable/victoriabranch - Remember the path of nova directory
# In kolla directory path
$ cd ..
$ git clone https://github.com/openstack/nova.git
$ cd nova/
$ git checkout stable/victoria
$ pwd
/root/nova
5. Modify kolla-build.conf
- Modify
[nova-base]part’stypeandlocation - (Option) Modify
tagif you want to change image tag name - location value must be your nova directory path on your local computer
- The location of the generated configuration file is
etc/kolla/kolla-build.conf, it can also be copied to/etc/kolla. The default location is one of/etc/kolla/kolla-build.conforetc/kolla/kolla-build.conf.
# In nova directory path
$ cd ..
$ cd kolla
$ vi etc/kolla/kolla-build.conf # File is in kolla repo path
...
[nova-base]
type = local
# Below value should be your local computer nova directory path
location = /root/nova
...
...
# The Docker tag (string value)
tag = victoria
...
- Copy modified file
etc/kolla/kolla-build.confto/etc/kolla/kolla-build.conf
$ mkdir -p /etc/kolla/ && cp etc/kolla/kolla-build.conf /etc/kolla/kolla-build.conf
6. Build
- Build nova from source code in kolla directory
# In kolla directory path
$ python tools/build.py -t source nova
# OR
$ kolla-build -t source nova
- Build all components using binary
# In kolla directory path
$ python tools/build.py
# OR
$ kolla-build
- Build specific component
# In kolla directory path
$ python tools/build.py keystone
# OR
$ kolla-build keystone
- Build using specific os base image
- Use
-boption withubuntuorcentos
# In kolla directory path
$ python tools/build.py -b centos -t source nova
# OR
$ kolla-build -b centos -t source nova
Image build result
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kolla/centos-source-nova-compute victoria 5145ea1a6ba7 About an hour ago 2.48GB
kolla/centos-source-nova-novncproxy victoria d8338f6be7fa About an hour ago 1.66GB
kolla/centos-source-nova-ssh victoria bbd9d11448b4 About an hour ago 1.61GB
kolla/centos-source-nova-compute-ironic victoria 18d58cc4b892 About an hour ago 1.61GB
kolla/centos-source-nova-conductor victoria 395fa15a5da4 2 hours ago 1.58GB
kolla/centos-source-nova-api victoria 20cc9cbe4234 2 hours ago 1.58GB
kolla/centos-source-nova-scheduler victoria b8b967a7dc3d 2 hours ago 1.58GB
kolla/centos-source-nova-mksproxy victoria 90e969a20b73 2 hours ago 1.58GB
kolla/centos-source-nova-serialproxy victoria b8a4f46b847d 2 hours ago 1.58GB
kolla/centos-source-nova-base victoria 4fdef07ed1c6 2 hours ago 1.58GB
kolla/centos-source-novajoin-server victoria 9359d838c42b 2 hours ago 956MB
kolla/centos-source-novajoin-notifier victoria 7704d7b68a0a 2 hours ago 956MB
kolla/centos-source-novajoin-base victoria 75aca84b6a12 2 hours ago 956MB
kolla/centos-source-openstack-base victoria 215a22192097 2 hours ago 809MB
kolla/centos-source-nova-libvirt victoria 1672530e7c27 2 hours ago 1.28GB
kolla/centos-source-base victoria 36674f426fd1 2 hours ago 314MB
centos 8 0d120b6ccaa8 3 months ago 215MB