mirror of
https://github.com/kubernetes-sigs/descheduler.git
synced 2026-01-26 05:14:13 +01:00
Enable Multi-Arch Container Image Builds
Previous to this change official descheduler container images only supported the AMD64 hardware architecture. This change enables building official descheduler container images for multiple architectures. The initially supported architectures are AMD64 and ARM64.
This commit is contained in:
@@ -15,8 +15,9 @@ FROM golang:1.15.2
|
|||||||
|
|
||||||
WORKDIR /go/src/sigs.k8s.io/descheduler
|
WORKDIR /go/src/sigs.k8s.io/descheduler
|
||||||
COPY . .
|
COPY . .
|
||||||
|
ARG ARCH
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
RUN VERSION=${VERSION} make
|
RUN VERSION=${VERSION} make build.$ARCH
|
||||||
|
|
||||||
FROM scratch
|
FROM scratch
|
||||||
|
|
||||||
|
|||||||
29
Makefile
29
Makefile
@@ -18,6 +18,7 @@
|
|||||||
VERSION?=v$(shell date +%Y%m%d)-$(shell git describe --tags --match "v*")
|
VERSION?=v$(shell date +%Y%m%d)-$(shell git describe --tags --match "v*")
|
||||||
BUILD=$(shell date +%FT%T%z)
|
BUILD=$(shell date +%FT%T%z)
|
||||||
LDFLAG_LOCATION=sigs.k8s.io/descheduler/cmd/descheduler/app
|
LDFLAG_LOCATION=sigs.k8s.io/descheduler/cmd/descheduler/app
|
||||||
|
ARCHS = amd64 arm64
|
||||||
|
|
||||||
LDFLAGS=-ldflags "-X ${LDFLAG_LOCATION}.version=${VERSION} -X ${LDFLAG_LOCATION}.buildDate=${BUILD}"
|
LDFLAGS=-ldflags "-X ${LDFLAG_LOCATION}.version=${VERSION} -X ${LDFLAG_LOCATION}.buildDate=${BUILD}"
|
||||||
|
|
||||||
@@ -47,18 +48,40 @@ all: build
|
|||||||
build:
|
build:
|
||||||
CGO_ENABLED=0 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
CGO_ENABLED=0 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
||||||
|
|
||||||
|
build.amd64:
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
||||||
|
|
||||||
|
build.arm64:
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
||||||
|
|
||||||
dev-image: build
|
dev-image: build
|
||||||
docker build -f Dockerfile.dev -t $(IMAGE) .
|
docker build -f Dockerfile.dev -t $(IMAGE) .
|
||||||
|
|
||||||
image:
|
image:
|
||||||
docker build --build-arg VERSION="$(VERSION)" -t $(IMAGE) .
|
docker build --build-arg VERSION="$(VERSION)" --build-arg ARCH="amd64" -t $(IMAGE) .
|
||||||
|
|
||||||
push-container-to-gcloud: image
|
image.amd64:
|
||||||
|
docker build --build-arg VERSION="$(VERSION)" --build-arg ARCH="amd64" -t $(IMAGE)-amd64 .
|
||||||
|
|
||||||
|
image.arm64:
|
||||||
|
docker build --build-arg VERSION="$(VERSION)" --build-arg ARCH="arm64" -t $(IMAGE)-arm64 .
|
||||||
|
|
||||||
|
push: image
|
||||||
gcloud auth configure-docker
|
gcloud auth configure-docker
|
||||||
docker tag $(IMAGE) $(IMAGE_GCLOUD)
|
docker tag $(IMAGE) $(IMAGE_GCLOUD)
|
||||||
docker push $(IMAGE_GCLOUD)
|
docker push $(IMAGE_GCLOUD)
|
||||||
|
|
||||||
push: push-container-to-gcloud
|
push-all: image.amd64 image.arm64
|
||||||
|
gcloud auth configure-docker
|
||||||
|
for arch in $(ARCHS); do \
|
||||||
|
docker tag $(IMAGE)-$${arch} $(IMAGE_GCLOUD)-$${arch} ;\
|
||||||
|
docker push $(IMAGE_GCLOUD)-$${arch} ;\
|
||||||
|
done
|
||||||
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create $(IMAGE_GCLOUD) $(addprefix --amend $(IMAGE_GCLOUD)-, $(ARCHS))
|
||||||
|
for arch in $(ARCHS); do \
|
||||||
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate --arch $${arch} $(IMAGE_GCLOUD) $(IMAGE_GCLOUD)-$${arch} ;\
|
||||||
|
done
|
||||||
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(IMAGE_GCLOUD) ;\
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf _output
|
rm -rf _output
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ steps:
|
|||||||
- VERSION=$_GIT_TAG
|
- VERSION=$_GIT_TAG
|
||||||
- BASE_REF=$_PULL_BASE_REF
|
- BASE_REF=$_PULL_BASE_REF
|
||||||
args:
|
args:
|
||||||
- push
|
- push-all
|
||||||
substitutions:
|
substitutions:
|
||||||
# _GIT_TAG will be filled with a git-based tag for the image, of the form vYYYYMMDD-hash, and
|
# _GIT_TAG will be filled with a git-based tag for the image, of the form vYYYYMMDD-hash, and
|
||||||
# can be used as a substitution
|
# can be used as a substitution
|
||||||
|
|||||||
Reference in New Issue
Block a user