Support Alpine Distro Base Images
Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that is much more complete than other BusyBox based images. This makes Alpine Linux a great image base for utilities and even production applications. This enables each of our base images to be very small compared to the equivalent Ubuntu images which starts around 200 plus MB in size which could give us a 1000% plus savings on container sizes.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- Andre Pollard
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- Obsolete
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
- Jeffrey Zhang
Whiteboard
There are numerous things which are still not supported on Alpine Linux. First of all, only the build type "source" would be possible to implement, since few of the services actually exist as a binary packages for Alpine Linux.
The 3rd party repositories which are being included in the "base" image, such as grafana, influxdb or kibana. None of those are available as packages nor external repositories for Alpine Linux. Docker images incorporating those services do exist on Docker Hub but would need to be carefully layered ontop of each other, which would result in a tedious and error-prone approach - if possible at all.
Secondly, the pip dependencies "python-
It was possible to build the "openstack-base" image by omitting the problematic libraries and services. The resulting size difference was 576MB based on Alpine 3.7 vs 716MB based on Ubuntu 16.04. Ontop of this image, it was possible to create simple services (e.g. Barbican) which don't use any of the problematic dependencies.
However, a full support for Alpine Linux as a base distro is still impossible due to crucial libraries being missing or incompatible. Due to the layering nature of the Docker filesystem [2], the size benefit of an Alpine-based "openstack-base" image is lost as soon as any other service on the same host still depends on another "openstack-base" image (e.g. based on Ubuntu) because it is not compatible with the Alpine base. In conclusion, there is little to no benefit of providing an Alpine base option for just a small subset of OpenStack services in Kolla.
[1] http://
[2] https:/