[kolla] Image building question

Sean Mooney smooney at redhat.com
Fri Mar 31 11:01:21 UTC 2023


On Thu, 2023-03-30 at 16:49 -0400, Satish Patel wrote:
> Folks,
> 
> I am playing with kolla image building to understand how it works. I am
> using the following command to build images and wanted to check with you
> folks if that is the correct way to do it.
> 
> $ kolla-build -b ubuntu -t source keystone nova neutron glance
> 
> Does the above command compile code from source or just download images
> from remote repositories and re-compile them?
> 
openstack is mainly python so in general ther is no complie step.
but to answer your question that builds the image using the source tarballs
or the openstakc packages.

the defaults soruce locations are rendered into a file which you can override 
from the data stored in https://github.com/openstack/kolla/blob/master/kolla/common/sources.py
the other build config defaults are generated form this code
https://github.com/openstack/kolla/blob/master/kolla/common/config.py

when you invoke kolla-build its executing https://github.com/openstack/kolla/blob/master/kolla/cmd/build.py
but the main build workflow is here https://github.com/openstack/kolla/blob/be15d6212f278027c257f9dd67e5b2719e9f730a/kolla/image/build.py#L95

the tl;dr is the build worklow starts by creating  build director and locating the docker file templats.
in otherwords the content of the https://github.com/openstack/kolla/tree/be15d6212f278027c257f9dd67e5b2719e9f730a/docker directory

each project has a direcoty in the docker directory and then each contaienr that project has has a directory in the project directory 

so the aodh project has a aodh folder https://github.com/openstack/kolla/tree/be15d6212f278027c257f9dd67e5b2719e9f730a/docker/aodh
the convention is to have a <project>-base contaienr which handels the depency installation and then one addtional contaienr for each binary deamon
the project has i.e. aodh-api

the name of the folder in teh project dir is used as the name of the contaienr 

if we look at the content of the docker files we will see that they are not actuly dockerfiles
https://github.com/openstack/kolla/blob/be15d6212f278027c257f9dd67e5b2719e9f730a/docker/aodh/aodh-api/Dockerfile.j2

they are jinja2 templates that produce docker files

kolla as far as i am aware has drop support for binary images and alternitiv distos

but looking at an older release we can se ehow this worked
https://github.com/openstack/kolla/blob/stable/wallaby/docker/nova/nova-base/Dockerfile.j2#L13-L52

each docker file template would use the jinja2 to generate a set of concreate docker files form the template
and make dession based on the parmater passed in.

so when you are invokeing 
kolla-build -b ubuntu -t source keystone nova neutron glance

what actully happening is that the -t flag is being set as teh install_type parmater in the the jinja2 environemtn when
the docker file is rendered.

after all the docer files are rendered into normal docker files kolla just invokes the build.

in the case of a source build that inovles pre fetching the source tar from https://tarballs.opendev.org
and puting it in the build directory so that it can be included into the contianer.

kolla also used to supprot git repo as a alternitve  source fromat

i have glossed over a lot of the details of how this actully work but that is the essence of what that command is doing
creating a build dir, downloading the source, rendering the dockerfile templates to docker files, invokeing docker build on those
and then taging them with the contaienr nameand build tag


https://docs.openstack.org/kolla/latest/admin/image-building.html
covers this form a high level

>   because in command output
> I've not noticed anything related to the compiling process going on.
> 
> Here is the output of all images produced by kolla-build command. Do I need
> anything else or is this enough to deploy kolla?
you can deploy coll with what you have yes although since the kolla files are automaticaly
built by ci kolla-ansible can just use the ones form the docker hub or quay instead you do not need to build them yourself

if you do build them your self then there is basically one other stpe that you shoudl take if this si a multi node deployment
you should push the iamges to an interally host docker registry although based on the hostname in the prompt below
it looks like you ahve alredy done that.
> 
> root at docker-reg:~# docker images
> REPOSITORY                            TAG       IMAGE ID       CREATED
>         SIZE
> kolla/mariadb-server                  15.1.0    2a497eee8269   26 minutes
> ago      595MB
> kolla/cron                            15.1.0    342877f26a8a   30 minutes
> ago      250MB
> kolla/memcached                       15.1.0    0d19a4902644   31 minutes
> ago      250MB
> kolla/mariadb-clustercheck            15.1.0    d84427d3c639   31 minutes
> ago      314MB
> kolla/mariadb-base                    15.1.0    34447e3e59b6   31 minutes
> ago      314MB
> kolla/keepalived                      15.1.0    82133b09fbf0   31 minutes
> ago      260MB
> kolla/prometheus-memcached-exporter   15.1.0    6c2d605f70ee   31 minutes
> ago      262MB
> <none>                                <none>    e66b228c2a07   31 minutes
> ago      248MB
> kolla/rabbitmq                        15.1.0    8de5c39379d3   32 minutes
> ago      309MB
> kolla/fluentd                         15.1.0    adfd19027862   33 minutes
> ago      519MB
> kolla/haproxy-ssh                     15.1.0    514357ac4d36   36 minutes
> ago      255MB
> kolla/haproxy                         15.1.0    e5b9cfdf6dfc   37 minutes
> ago      257MB
> kolla/prometheus-haproxy-exporter     15.1.0    a679f65fd735   37 minutes
> ago      263MB
> kolla/prometheus-base                 15.1.0    afeff3ed5dce   37 minutes
> ago      248MB
> kolla/glance-api                      15.1.0    a2241f68f23a   38 minutes
> ago      1.04GB
> kolla/glance-base                     15.1.0    7286772a03a4   About an
> hour ago   1.03GB
> kolla/neutron-infoblox-ipam-agent     15.1.0    f90ffc1a3326   About an
> hour ago   1.05GB
> kolla/neutron-server                  15.1.0    69c844a2e3a9   About an
> hour ago   1.05GB
> kolla/neutron-l3-agent                15.1.0    4d87e6963c96   About an
> hour ago   1.05GB
> <none>                                <none>    486da9a6562e   About an
> hour ago   1.05GB
> kolla/neutron-linuxbridge-agent       15.1.0    e5b3ca7e099c   About an
> hour ago   1.04GB
> kolla/neutron-bgp-dragent             15.1.0    ac37377820c6   About an
> hour ago   1.04GB
> kolla/ironic-neutron-agent            15.1.0    90993adcd74b   About an
> hour ago   1.04GB
> kolla/neutron-metadata-agent          15.1.0    8522f147f88d   About an
> hour ago   1.04GB
> kolla/neutron-sriov-agent             15.1.0    8a92ce7d13c0   About an
> hour ago   1.04GB
> kolla/neutron-dhcp-agent              15.1.0    5c214b0171f5   About an
> hour ago   1.04GB
> kolla/neutron-metering-agent          15.1.0    7b3b91ecd77b   About an
> hour ago   1.04GB
> kolla/neutron-openvswitch-agent       15.1.0    1f8807308814   About an
> hour ago   1.04GB
> kolla/neutron-base                    15.1.0    f85b6a2e2725   About an
> hour ago   1.04GB
> kolla/nova-libvirt                    15.1.0    0f3ecefe4752   About an
> hour ago   987MB
> kolla/nova-compute                    15.1.0    241b7e7fafbe   About an
> hour ago   1.47GB
> kolla/nova-spicehtml5proxy            15.1.0    b740820a7ad1   About an
> hour ago   1.15GB
> kolla/nova-novncproxy                 15.1.0    1ba2f443d5c3   About an
> hour ago   1.22GB
> kolla/nova-compute-ironic             15.1.0    716612107532   About an
> hour ago   1.12GB
> kolla/nova-ssh                        15.1.0    ae2397f4e1c1   About an
> hour ago   1.11GB
> kolla/nova-api                        15.1.0    2aef02667ff8   About an
> hour ago   1.11GB
> kolla/nova-conductor                  15.1.0    6f1da3400901   About an
> hour ago   1.11GB
> kolla/nova-scheduler                  15.1.0    628326776b1d   About an
> hour ago   1.11GB
> kolla/nova-serialproxy                15.1.0    28eb7a4a13f8   About an
> hour ago   1.11GB
> kolla/nova-base                       15.1.0    e47420013283   About an
> hour ago   1.11GB
> kolla/keystone                        15.1.0    e5530d829d5f   2 hours ago
>         947MB
> kolla/keystone-ssh                    15.1.0    eaa7e3f3985a   2 hours ago
>         953MB
> kolla/keystone-fernet                 15.1.0    8a4fa24853a8   2 hours ago
>         951MB
> kolla/keystone-base                   15.1.0    b6f9562364a9   2 hours ago
>         945MB
> kolla/barbican-base                   15.1.0    b2fdef1afb44   2 hours ago
>         915MB
> kolla/barbican-keystone-listener      15.1.0    58bd59de2c63   2 hours ago
>         915MB
> kolla/openstack-base                  15.1.0    c805b4b3b1c1   2 hours ago
>         893MB
> kolla/base                            15.1.0    f68e9ef3dd30   2 hours ago
>         248MB
> registry                              2         8db46f9d7550   19 hours ago
>        24.2MB
> ubuntu                                22.04     08d22c0ceb15   3 weeks ago
>         77.8MB




More information about the openstack-discuss mailing list