Use docker buildx for etcd image

This allows to choose the correct architecture in the image manifest,
which defaulted to the host system before applying this patch.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
This commit is contained in:
Sascha Grunert 2021-08-04 10:21:19 +02:00
parent 9ff3b7e744
commit ea1bc18bc1
No known key found for this signature in database
GPG Key ID: 09D97D153EF94D93

View File

@ -34,7 +34,7 @@ LATEST_ETCD_VERSION?=3.5.0
# REVISION provides a version number for this image and all it's bundled # REVISION provides a version number for this image and all it's bundled
# artifacts. It should start at zero for each LATEST_ETCD_VERSION and increment # artifacts. It should start at zero for each LATEST_ETCD_VERSION and increment
# for each revision of this image at that etcd version. # for each revision of this image at that etcd version.
REVISION?=0 REVISION?=1
# IMAGE_TAG Uniquely identifies k8s.gcr.io/etcd docker image with a tag of the form "<etcd-version>-<revision>". # IMAGE_TAG Uniquely identifies k8s.gcr.io/etcd docker image with a tag of the form "<etcd-version>-<revision>".
IMAGE_TAG=$(LATEST_ETCD_VERSION)-$(REVISION) IMAGE_TAG=$(LATEST_ETCD_VERSION)-$(REVISION)
@ -84,6 +84,8 @@ endif
RUNNERIMAGE?=gcr.io/distroless/static:latest RUNNERIMAGE?=gcr.io/distroless/static:latest
QEMUVERSION?=5.2.0-2
build: build:
# Explicitly copy files to the temp directory # Explicitly copy files to the temp directory
$(BIN_INSTALL) migrate-if-needed.sh $(TEMP_DIR) $(BIN_INSTALL) migrate-if-needed.sh $(TEMP_DIR)
@ -143,13 +145,20 @@ else
cd $(TEMP_DIR) && echo "ENV ETCD_UNSUPPORTED_ARCH=$(ARCH)" >> Dockerfile cd $(TEMP_DIR) && echo "ENV ETCD_UNSUPPORTED_ARCH=$(ARCH)" >> Dockerfile
endif endif
docker run --rm --privileged multiarch/qemu-user-static:$(QEMUVERSION) --reset -p yes
docker buildx version
BUILDER=$(shell docker buildx create --use)
# And build the image # And build the image
docker build \ docker buildx build \
--pull \ --pull \
--load \
--platform linux/$(ARCH) \
-t $(REGISTRY)/etcd-$(ARCH):$(IMAGE_TAG) \ -t $(REGISTRY)/etcd-$(ARCH):$(IMAGE_TAG) \
--build-arg BASEIMAGE=$(BASEIMAGE) \ --build-arg BASEIMAGE=$(BASEIMAGE) \
--build-arg RUNNERIMAGE=$(RUNNERIMAGE) \ --build-arg RUNNERIMAGE=$(RUNNERIMAGE) \
$(TEMP_DIR) $(TEMP_DIR)
docker buildx rm $$BUILDER
push: build push: build
docker tag $(REGISTRY)/etcd-$(ARCH):$(IMAGE_TAG) $(MANIFEST_IMAGE)-$(ARCH):$(IMAGE_TAG) docker tag $(REGISTRY)/etcd-$(ARCH):$(IMAGE_TAG) $(MANIFEST_IMAGE)-$(ARCH):$(IMAGE_TAG)