We wanted to be able to run OpenShift using any CRI runtime. While upstream Kubernetes has been able to do this for a while, one of OpenShift's distinguishing features - building container images when the source code for an application is updated - had been built around running containers which could call a docker engine API to build images. That API that has no direct counterpart in CRI.
We'll take a quick look at how OpenShift runs a set of containers to build a new container image using updated sources, and to push that image to a registry. We'll look at how we modified the builder containers to do their work without bothering the container engine that was being used to run them, and some of the unexpected problems that we found we had to solve along the way.