[kolla] Image building question
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? 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? 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
Hello Satish, Only OpenStack is installed from source, all the dependencies (e.g. MariaDB, Apache, etc) are installed from distribution repositories. The set of images you need depends on what you enable in Kolla-Ansible (unless you use a different mechanism for deploying those images). Michal
On 30 Mar 2023, at 22:49, Satish Patel <satish.txt@gmail.com> 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? 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?
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
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
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
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?
On Fri, 2023-03-31 at 10:25 -0400, Satish Patel wrote: that is the offcial location where all opendev/openstack projects are released and its the location distros use to build there packages.
If I want to add some tools or packages inside images then I should use Dockerfile.j2 to add and compile images. correct?
yes so one of the great things about kolla images is tiem was taken to write down the image api when the project was first started https://docs.openstack.org/kolla/yoga/admin/kolla_api.html over time the common usecaes were then docuemnted in the admin image-building guide https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-c... all of the templated imnages have convension/contract that they provide delement that operator can use to add customisations. for examplel the nova_base_footer block and be used to add addtional content to the nova-base image https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerf... to customise the iamges you provide what is know as a template override file the contrib folder has a number of exmaples https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs... https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ... https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ... the way they work is you starte it with {% extends parent_template %} then you just create a block that mages the name of the one you want to repalce {% extends parent_template %} {% block nova_base_footer %} RUN /bin/true {% endblock %} what ever content you put in the block will be injected directly into the rendered docer file https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-funct... show how to use that for neutron in addtion to replacing block you can set the conten of specal variables like horizon_packages_append or horizon_packages_remove https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-cus... that allow you add an remove packages in a simple way there is also a set of macros that you can use you include them with {% import "macros.j2" as macros with context %} they are defiend here https://github.com/openstack/kolla/blob/master/docker/macros.j2 if you know that the docs exist the capablitys are coverd pretty well in the kolla docs you just need to know where to look hopefully that helps. the ovs-dpdk template overide docs can be fouund here https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html its a liltle differnt then the other since there i used the template override mechanium to allow compiling ovs with dpdk form souces kolla normlly does not support that but it serves as a demonstration for how operator can do that if they really need too. i.e. compile a replacment for a minary componet like mariadb. it salso show how to use git as the souce localtion instead of tars if that is your prefernce.
~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
Thank you sean, I did following an it works hope this is correct way to customize {% extends parent_template %} # Horizon {% block horizon_ubuntu_source_setup %} RUN apt update -y RUN apt install -y net-tools vim RUN touch /root/foo {% endblock %} $ kolla-build --registry docker-reg:4000 -b ubuntu -t source --tag zed-v2 --template-override template-overrides.j2 --debug horizon On Fri, Mar 31, 2023 at 1:31 PM Sean Mooney <smooney@redhat.com> wrote:
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?
On Fri, 2023-03-31 at 10:25 -0400, Satish Patel wrote: that is the offcial location where all opendev/openstack projects are released and its the location distros use to build there packages.
If I want to add some tools or packages inside images then I should use Dockerfile.j2 to add and compile images. correct?
yes so one of the great things about kolla images is tiem was taken to write down the image api when the project was first started https://docs.openstack.org/kolla/yoga/admin/kolla_api.html
over time the common usecaes were then docuemnted in the admin image-building guide
https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-c...
all of the templated imnages have convension/contract that they provide delement that operator can use to add customisations.
for examplel the nova_base_footer block and be used to add addtional content to the nova-base image
https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerf...
to customise the iamges you provide what is know as a template override file
the contrib folder has a number of exmaples
https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
the way they work is you starte it with
{% extends parent_template %}
then you just create a block that mages the name of the one you want to repalce {% extends parent_template %}
{% block nova_base_footer %} RUN /bin/true {% endblock %}
what ever content you put in the block will be injected directly into the rendered docer file
https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-funct...
show how to use that for neutron
in addtion to replacing block you can set the conten of specal variables like horizon_packages_append or horizon_packages_remove
https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-cus...
that allow you add an remove packages in a simple way there is also a set of macros that you can use
you include them with {% import "macros.j2" as macros with context %}
they are defiend here https://github.com/openstack/kolla/blob/master/docker/macros.j2
if you know that the docs exist the capablitys are coverd pretty well in the kolla docs you just need to know where to look hopefully that helps.
the ovs-dpdk template overide docs can be fouund here https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html
its a liltle differnt then the other since there i used the template override mechanium to allow compiling ovs with dpdk form souces
kolla normlly does not support that but it serves as a demonstration for how operator can do that if they really need too. i.e. compile a replacment for a minary componet like mariadb. it salso show how to use git as the souce localtion instead of tars if that is your prefernce.
~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
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
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
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
am the that 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
Hello. I have a question. Do we need the kolla-ansible version that matches kolla to deploy openstack? Nguyen Huu Khoi On Sat, Apr 1, 2023 at 11:27 PM Satish Patel <satish.txt@gmail.com> wrote:
Thank you sean,
I did following an it works hope this is correct way to customize
{% extends parent_template %}
# Horizon {% block horizon_ubuntu_source_setup %} RUN apt update -y RUN apt install -y net-tools vim RUN touch /root/foo {% endblock %}
$ kolla-build --registry docker-reg:4000 -b ubuntu -t source --tag zed-v2 --template-override template-overrides.j2 --debug horizon
On Fri, Mar 31, 2023 at 1:31 PM Sean Mooney <smooney@redhat.com> wrote:
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?
On Fri, 2023-03-31 at 10:25 -0400, Satish Patel wrote: that is the offcial location where all opendev/openstack projects are released and its the location distros use to build there packages.
If I want to add some tools or packages inside images then I should use Dockerfile.j2 to add and compile images. correct?
yes so one of the great things about kolla images is tiem was taken to write down the image api when the project was first started https://docs.openstack.org/kolla/yoga/admin/kolla_api.html
over time the common usecaes were then docuemnted in the admin image-building guide
https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-c...
all of the templated imnages have convension/contract that they provide delement that operator can use to add customisations.
for examplel the nova_base_footer block and be used to add addtional content to the nova-base image
https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerf...
to customise the iamges you provide what is know as a template override file
the contrib folder has a number of exmaples
https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
the way they work is you starte it with
{% extends parent_template %}
then you just create a block that mages the name of the one you want to repalce {% extends parent_template %}
{% block nova_base_footer %} RUN /bin/true {% endblock %}
what ever content you put in the block will be injected directly into the rendered docer file
https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-funct...
show how to use that for neutron
in addtion to replacing block you can set the conten of specal variables like horizon_packages_append or horizon_packages_remove
https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-cus...
that allow you add an remove packages in a simple way there is also a set of macros that you can use
you include them with {% import "macros.j2" as macros with context %}
they are defiend here https://github.com/openstack/kolla/blob/master/docker/macros.j2
if you know that the docs exist the capablitys are coverd pretty well in the kolla docs you just need to know where to look hopefully that helps.
the ovs-dpdk template overide docs can be fouund here https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html
its a liltle differnt then the other since there i used the template override mechanium to allow compiling ovs with dpdk form souces
kolla normlly does not support that but it serves as a demonstration for how operator can do that if they really need too. i.e. compile a replacment for a minary componet like mariadb. it salso show how to use git as the souce localtion instead of tars if that is your prefernce.
~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.
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
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
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
I am the that 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
On Mon, 2023-04-03 at 07:18 +0700, Nguyễn Hữu Khôi wrote:
Hello. I have a question. Do we need the kolla-ansible version that matches kolla to deploy openstack? in general no.
the master branch can often be used to deploy stable/* however its better to keep them alinged. kolla has a pretty stable image api which means that it does not offten need to modify how images are deployed and as a result some mismatch will not break things. however over time thing do change that are incompatible across releases so unless you have a strong reason not to keep them alinged it best to use the same major release. i.e. use a stable/zed version of kolla-ansible to deploy stable/zed images. using other version of kolla-ansble woudl not be tested in ci so its would not be gurarentteed to work. you might get lucky but unless you developing kolla-ansible there is little reason to use missaligned versions.
Nguyen Huu Khoi
On Sat, Apr 1, 2023 at 11:27 PM Satish Patel <satish.txt@gmail.com> wrote:
Thank you sean,
I did following an it works hope this is correct way to customize
{% extends parent_template %}
# Horizon {% block horizon_ubuntu_source_setup %} RUN apt update -y RUN apt install -y net-tools vim RUN touch /root/foo {% endblock %}
$ kolla-build --registry docker-reg:4000 -b ubuntu -t source --tag zed-v2 --template-override template-overrides.j2 --debug horizon
On Fri, Mar 31, 2023 at 1:31 PM Sean Mooney <smooney@redhat.com> wrote:
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?
On Fri, 2023-03-31 at 10:25 -0400, Satish Patel wrote: that is the offcial location where all opendev/openstack projects are released and its the location distros use to build there packages.
If I want to add some tools or packages inside images then I should use Dockerfile.j2 to add and compile images. correct?
yes so one of the great things about kolla images is tiem was taken to write down the image api when the project was first started https://docs.openstack.org/kolla/yoga/admin/kolla_api.html
over time the common usecaes were then docuemnted in the admin image-building guide
https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-c...
all of the templated imnages have convension/contract that they provide delement that operator can use to add customisations.
for examplel the nova_base_footer block and be used to add addtional content to the nova-base image
https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerf...
to customise the iamges you provide what is know as a template override file
the contrib folder has a number of exmaples
https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
the way they work is you starte it with
{% extends parent_template %}
then you just create a block that mages the name of the one you want to repalce {% extends parent_template %}
{% block nova_base_footer %} RUN /bin/true {% endblock %}
what ever content you put in the block will be injected directly into the rendered docer file
https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-funct...
show how to use that for neutron
in addtion to replacing block you can set the conten of specal variables like horizon_packages_append or horizon_packages_remove
https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-cus...
that allow you add an remove packages in a simple way there is also a set of macros that you can use
you include them with {% import "macros.j2" as macros with context %}
they are defiend here https://github.com/openstack/kolla/blob/master/docker/macros.j2
if you know that the docs exist the capablitys are coverd pretty well in the kolla docs you just need to know where to look hopefully that helps.
the ovs-dpdk template overide docs can be fouund here https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html
its a liltle differnt then the other since there i used the template override mechanium to allow compiling ovs with dpdk form souces
kolla normlly does not support that but it serves as a demonstration for how operator can do that if they really need too. i.e. compile a replacment for a minary componet like mariadb. it salso show how to use git as the souce localtion instead of tars if that is your prefernce.
~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.
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
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
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
I am the that 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
Hello. I mean if i use kolla-ansible 13.0.0 and kolla 13.0.0 then i upgrade kolla to 13.8.0. I will use kolla 13.8.0 to build new images? Nguyen Huu Khoi On Mon, Apr 3, 2023 at 7:38 PM Sean Mooney <smooney@redhat.com> wrote:
On Mon, 2023-04-03 at 07:18 +0700, Nguyễn Hữu Khôi wrote:
Hello. I have a question. Do we need the kolla-ansible version that matches kolla to deploy openstack? in general no.
the master branch can often be used to deploy stable/* however its better to keep them alinged.
kolla has a pretty stable image api which means that it does not offten need to modify how images are deployed and as a result some mismatch will not break things.
however over time thing do change that are incompatible across releases so unless you have a strong reason not to keep them alinged it best to use the same major release. i.e. use a stable/zed version of kolla-ansible to deploy stable/zed images.
using other version of kolla-ansble woudl not be tested in ci so its would not be gurarentteed to work. you might get lucky but unless you developing kolla-ansible there is little reason to use missaligned versions.
Nguyen Huu Khoi
On Sat, Apr 1, 2023 at 11:27 PM Satish Patel <satish.txt@gmail.com>
wrote:
Thank you sean,
I did following an it works hope this is correct way to customize
{% extends parent_template %}
# Horizon {% block horizon_ubuntu_source_setup %} RUN apt update -y RUN apt install -y net-tools vim RUN touch /root/foo {% endblock %}
$ kolla-build --registry docker-reg:4000 -b ubuntu -t source --tag
--template-override template-overrides.j2 --debug horizon
On Fri, Mar 31, 2023 at 1:31 PM Sean Mooney <smooney@redhat.com> wrote:
On Fri, 2023-03-31 at 10:25 -0400, Satish Patel wrote:
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
software correctly? that is the offcial location where all opendev/openstack projects are released and its the location distros use to build there packages.
If I want to add some tools or packages inside images then I should use Dockerfile.j2 to add and compile images. correct?
yes so one of the great things about kolla images is tiem was taken to write down the image api when the project was first started https://docs.openstack.org/kolla/yoga/admin/kolla_api.html
over time the common usecaes were then docuemnted in the admin image-building guide
https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-c...
all of the templated imnages have convension/contract that they
delement that operator can use to add customisations.
for examplel the nova_base_footer block and be used to add addtional content to the nova-base image
https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerf...
to customise the iamges you provide what is know as a template
override
file
the contrib folder has a number of exmaples
https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/templ...
the way they work is you starte it with
{% extends parent_template %}
then you just create a block that mages the name of the one you want
to
repalce {% extends parent_template %}
{% block nova_base_footer %} RUN /bin/true {% endblock %}
what ever content you put in the block will be injected directly into the rendered docer file
https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-funct...
show how to use that for neutron
in addtion to replacing block you can set the conten of specal
variables
like horizon_packages_append or horizon_packages_remove
https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-cus...
that allow you add an remove packages in a simple way there is also a set of macros that you can use
you include them with {% import "macros.j2" as macros with context %}
they are defiend here https://github.com/openstack/kolla/blob/master/docker/macros.j2
if you know that the docs exist the capablitys are coverd pretty
well in
the kolla docs you just need to know where to look hopefully that helps.
the ovs-dpdk template overide docs can be fouund here
https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html
its a liltle differnt then the other since there i used the template override mechanium to allow compiling ovs with dpdk form souces
kolla normlly does not support that but it serves as a demonstration
for
how operator can do that if they really need too. i.e. compile a replacment for a minary componet like mariadb. it salso show how to use git as the souce localtion instead of tars if that is your prefernce.
~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
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
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
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
contaienr
if we look at the content of the docker files we will see that
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
zed-v2 source provide source director and directory the they 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
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
https://docs.openstack.org/kolla/latest/admin/image-building.html 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
participants (4)
-
Michał Nasiadka
-
Nguyễn Hữu Khôi
-
Satish Patel
-
Sean Mooney