[kolla][tripleo] Infra style images
One of things we have on a list of things to do during Ussuri cycle is implementation of 'infra' images. BP: https://blueprints.launchpad.net/kolla/+spec/infra-images # What are infra images? Images that are always built from binary packages (or are Java monsters). We have about 70 such ones from quick check. All those Ceph, Prometheus, MariaDB, cron, chrony, storm, sensu etc ones. ## libvirt image There is 'nova-libvirt' image. Contains libvirt daemon (with qemu and all required packages) so it would get renamed to 'libvirt'. # Building The idea is that 'infra' will be a new build type (like we have 'binary', 'source' etc). With all source base images marked as unbuildable so there will be no 'debian-infra-nova-compute' one. On the other hand building of 'binary'/'source' type images would lock out all 'infra' ones to not get images with names like 'debian-source-ceph-mon'. # Pros - Clean split between OpenStack components (binary/source) and infrastructure needed to get them running (infra). - Less images to publish on CI. Infra ones can be built weekly as they do not change much. - No more questions how did we built ceph-mon from source ;D # Cons - We need to change kolla-ansible, tripleo and maybe some other projects' code to use new type of images. - Migration from previous releases would be more complicated due to image renames.
Thanks for kicking off this conversation Marcin. On Mon, 25 Nov 2019 at 13:44, Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> wrote:
One of things we have on a list of things to do during Ussuri cycle is implementation of 'infra' images.
BP: https://blueprints.launchpad.net/kolla/+spec/infra-images
# What are infra images?
Images that are always built from binary packages (or are Java monsters). We have about 70 such ones from quick check. All those Ceph, Prometheus, MariaDB, cron, chrony, storm, sensu etc ones.
There are some e.g. skydive where we e.g. pull go binaries from github. Another loose definition is that they are everything other than python OpenStack projects.
## libvirt image
There is 'nova-libvirt' image. Contains libvirt daemon (with qemu and all required packages) so it would get renamed to 'libvirt'.
Not a hard requirement as it depends on base rather than nova-base, but it makes sense.
# Building
The idea is that 'infra' will be a new build type (like we have 'binary', 'source' etc). With all source base images marked as unbuildable so there will be no 'debian-infra-nova-compute' one.
On the other hand building of 'binary'/'source' type images would lock out all 'infra' ones to not get images with names like 'debian-source-ceph-mon'.
We need to think about the image hierarchy. The base images are always large, and if we don't share them between source, binary and infra, we could end up increasing the overall storage size rather than reducing it. Currently there are a few places where the base image depends on install_type: * we set the KOLLA_INSTALL_TYPE environment variable. This could be moved to openstack-base * RHEL binary images don't install EPEL. We're trying to get rid of EPEL, or at least only install it where necessary * there are some minor differences in the packages installed on CentOS. We could easily unify this There might be an argument in favour of dropping the type from the name for infra images, so that we just have debian-base, debian-cron etc.
# Pros
- Clean split between OpenStack components (binary/source) and infrastructure needed to get them running (infra).
- Less images to publish on CI. Infra ones can be built weekly as they do not change much.
It would be interesting to know how much storage we'll actually save through this effort. And also how much we'd save through squashing.
- No more questions how did we built ceph-mon from source ;D
# Cons
- We need to change kolla-ansible, tripleo and maybe some other projects' code to use new type of images.
- Migration from previous releases would be more complicated due to image renames.
No longer possible to build all necessary images with one kolla-build command.
participants (2)
-
Marcin Juszkiewicz
-
Mark Goddard