[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
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 source 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 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:
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 source 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 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
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:
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 source 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 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
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:
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 source 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 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
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
zed-v2
--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
source
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
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
participants (4)
-
Michał Nasiadka
-
Nguyễn Hữu Khôi
-
Satish Patel
-
Sean Mooney