[Openstack] Kolla 이미지를 source를 이용해 빌드하기

Openstack Kolla Image를 Source를 이용해 빌드해보자


환경

  • Linux 기반 시스템(Mac과 CentOS-7.6에서 테스트 완료)
  • Bash shell(/bin/bash)
  • Docker
  • pip
  • Git


Kolla Image?

Kolla Image

  • Kolla는 Openstack 컴포넌트들을 컨테이너화하여 실제 운영할 수 있는 상태로 배포하는 것을 목표로 두고 있는 프로젝트입니다.
  • Kolla Image는 오픈스택의 컴포넌트(nova, neutron…)들을 컨테이너화하여 만든 이미지들을 의미합니다.
  • 관련 프로젝트로는 Openstack Helm 그리고 Kolla-ansible이 있습니다.
  • 관련 링크 : https://docs.openstack.org/kolla/latest/


이미지 빌드 방법

빌드하기 전에!

  • 이미지를 빌드하는 방법에는 크게 binarysource 두 가지 방법이 있는데 기본값은 binary이며 다른 작업 없이 kolla 저장소를 받아서 이미지를 빌드하면 됩니다.
  • binary는 저장소를 통해 외부에서 빌드된 컴포넌트 관련 파일들을 가져와 생성하며 source의 경우에는 소스코드들로부터 직접 빌드를 합니다.
  • 아래 시나리오는 source를 통해서 빌드하는 방법이며 nova 컴포넌트만 빌드해보겠습니다.
  • source로 빌드하기 위해서는 해당 컴포넌트의 소스파일이 필요합니다.(git repository에서 가져올 예정입니다.)
  • 해당 시나리오는 둘 다 Mac과 CentOS에서 테스트를 완료했습니다.
  • 개발을 목적으로 kolla안에 있는 Dockerfile들을 이용해 빌드하실거면 kolla-build 명령어 대신 kolla 안에 있는 tools/build.py를 사용하셔야 합니다.


0. 사전 준비

CentOS

MacOS


1. Clone kolla repository

  • Clone kolla repository and switch to stable/rocky branch
$ git clone https://github.com/openstack/kolla.git
$ cd kolla/
$ git checkout stable/rocky


2. Install needed packages

# In kolla directory path
$ cd ..
$ pip install kolla/
$ pip install tox


3. Generate kolla-build.conf

$ pip install tox
$ cd kolla/
$ tox -e genconfig
...
genconfig: commands succeeded
congratulations :)

Issue Solving

  • Install packages if there are errors like below in CentOS
...
configure: error: no acceptable C compiler found in $PATH
...
_posixsubprocess.c:16:20: fatal error: Python.h: No such file or directory
...
  • Install python-devel and gcc
$ sudo yum install python-devel gcc -y


4. Clone nova repository

  • Clone nova repository and switch to stable/rocky branch
  • Remember the path of nova directory
# In kolla directory path
$ cd ..
$ git clone https://github.com/openstack/nova.git
$ cd nova/
$ git checkout stable/rocky
$ pwd
/root/nova


5. Modify kolla-build.conf

  • Modify [nova-base] part
  • location value must be your nova directory path on your local computer
# 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


6. Build

  • Build nova from source code in kolla directory
# In kolla directory path
$ kolla-build -t source nova
  • Build all components using binary
# In kolla directory path
$ kolla-build
  • Build specific component
# In kolla directory path
$ kolla-build keystone


이미지 빌드 결과

$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED              SIZE
kolla/centos-source-nova-compute           7.0.4               694d85ecaa62        About a minute ago   1.81GB
kolla/centos-source-novajoin-notifier      7.0.4               c116e353b02b        4 minutes ago        1.2GB
kolla/centos-source-novajoin-server        7.0.4               9541f2052b73        4 minutes ago        1.2GB
kolla/centos-source-novajoin-base          7.0.4               125d2a2e8b9a        4 minutes ago        1.2GB
kolla/centos-source-nova-placement-api     7.0.4               655930338019        7 minutes ago        1.34GB
kolla/centos-source-nova-api               7.0.4               d9521fa18d3d        7 minutes ago        1.34GB
kolla/centos-source-nova-spicehtml5proxy   7.0.4               6395db08d1df        8 minutes ago        1.33GB
kolla/centos-source-nova-ssh               7.0.4               b395c526352e        8 minutes ago        1.31GB
kolla/centos-source-nova-compute-ironic    7.0.4               dd0a8457063f        8 minutes ago        1.29GB
kolla/centos-source-nova-novncproxy        7.0.4               c407eee656a3        9 minutes ago        1.29GB
kolla/centos-source-nova-serialproxy       7.0.4               b854ffc79ded        11 minutes ago       1.26GB
kolla/centos-source-nova-consoleauth       7.0.4               1abeb9649aea        11 minutes ago       1.26GB
kolla/centos-source-nova-scheduler         7.0.4               0675166ec124        11 minutes ago       1.26GB
kolla/centos-source-nova-conductor         7.0.4               701da269a6d8        11 minutes ago       1.26GB
kolla/centos-source-nova-mksproxy          7.0.4               7aca763eadc8        11 minutes ago       1.26GB
kolla/centos-source-nova-base              7.0.4               7334dc66fc18        11 minutes ago       1.26GB
kolla/centos-source-nova-libvirt           7.0.4               2f9b6a373655        13 minutes ago       972MB
kolla/centos-source-openstack-base         7.0.4               a0d75d6d1f88        15 minutes ago       1.01GB
kolla/centos-source-base                   7.0.4               0c78c4431ab3        25 minutes ago       416MB
centos                                     7                   9f38484d220f        3 months ago         202MB
hello-world                                latest              fce289e99eb9        5 months ago         1.84kB

참고자료

[Docker] 도커(Docker) 이미지 이름과 태그 목록 가져오기

> 도커(Docker) 이미지 이름과 태그 목록을 awk과 tail 명령어를 이용해 가져오는 방법을 알아보자## 환경- Linux 기반 시스템- Bash shell(/bin/bash)- Docker- awk, tail 명령어## 도커(Docker...… Continue reading