Thank you Sean, What a wonderful explanation of the process. Yes I can download images from the public domain and push them to a local repository but in some cases I would like to add my own tools like monitoring agents, utilities etc for debugging so i decided to build my own images. I believe https://tarballs.opendev.org is the right place to source software correctly? If I want to add some tools or packages inside images then I should use Dockerfile.j2 to add and compile images. correct? ~S On Fri, Mar 31, 2023 at 7:01 AM Sean Mooney <smooney@redhat.com> wrote:
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/be15d6212f278027c257f9dd67e5b2719e9f...
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/be15d6212f278027c257f9dd67e5b2719e9f... 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/be15d6212f278027c257f9dd67e5b2719e9f... 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/be15d6212f278027c257f9dd67e5b2719e9f...
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...
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@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