There is strong interest in the community to support a number of architectures with docker images. One driver is Operator SDK scorecard for which KUTTL provides additional test features. The following architectures are needed to support scorecard:
- linux/amd64
- linux/arm64
- linux/ppc64le
- linux/s390x
In order to support this, we are using the new and experimental docker buildx. This allows for building and pushing of several architectures to the same docker repository allowing for the client platform to determine preferred architecture for its pull request.
In addition to using buildx
there are two more requirements to make this work:
- The base image must support all the architectures desired. For this reason we now use
registry.access.redhat.com/ubi8/ubi-minimal
. - The go libraries must support the architectures.
For a detailed understanding, please read the buildx build documentation.
You will need to enable
docker CLI experimental features for this to work.
To build and push manually the following is necessary: make docker-release
This will result in a command similar to the following with the version tag replaced with the current version:
docker buildx build . -t stackabletech/kuttl:v0.6.1 --platform linux/amd64,linux/arm64,linux/ppc64le --push
Updates for platform builds are maintained in hack/docker-release.sh.