mirror of
https://github.com/kubernetes-sigs/descheduler.git
synced 2026-01-28 06:29:29 +01:00
Merge pull request #449 from KohlsTechnology/arm-image
Enable Multi-Arch Container Image Builds
This commit is contained in:
@@ -15,8 +15,9 @@ FROM golang:1.15.5
|
|||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
3. Push the release branch to the descheuler repo and ensure branch protection is enabled (not required for patch releases)
|
3. Push the release branch to the descheuler repo and ensure branch protection is enabled (not required for patch releases)
|
||||||
4. Tag the repository from the `master` branch (from the `release-1.18` branch for a patch release) and push the tag `VERSION=v0.18.0 git tag -m $VERSION $VERSION; git push origin $VERSION`
|
4. Tag the repository from the `master` branch (from the `release-1.18` branch for a patch release) and push the tag `VERSION=v0.18.0 git tag -m $VERSION $VERSION; git push origin $VERSION`
|
||||||
5. Checkout the tag you just created and make sure your repo is clean by git's standards `git checkout $VERSION`
|
5. Checkout the tag you just created and make sure your repo is clean by git's standards `git checkout $VERSION`
|
||||||
6. Build and push the container image to the staging registry `VERSION=$VERSION make push`
|
6. Build and push the container image to the staging registry `VERSION=$VERSION make push-all`
|
||||||
7. Publish a draft release using the tag you just created
|
7. Publish a draft release using the tag you just created
|
||||||
8. Perform the [image promotion process](https://github.com/kubernetes/k8s.io/tree/master/k8s.gcr.io#image-promoter)
|
8. Perform the [image promotion process](https://github.com/kubernetes/k8s.io/tree/master/k8s.gcr.io#image-promoter)
|
||||||
9. Publish release
|
9. Publish release
|
||||||
|
|||||||
@@ -3,6 +3,16 @@
|
|||||||
Starting with descheduler release v0.10.0 container images are available in the official k8s container registry.
|
Starting with descheduler release v0.10.0 container images are available in the official k8s container registry.
|
||||||
* `k8s.gcr.io/descheduler/descheduler`
|
* `k8s.gcr.io/descheduler/descheduler`
|
||||||
|
|
||||||
|
Also, starting with descheduler release v0.20.0 multi-arch container images are provided. Currently AMD64 and ARM64
|
||||||
|
container images are provided. Multi-arch container images cannot be pulled by [kind](https://kind.sigs.k8s.io) from
|
||||||
|
a registry. Therefore starting with descheduler release v0.20.0 use the below process to download the official descheduler
|
||||||
|
image into a kind cluster.
|
||||||
|
```
|
||||||
|
kind create cluster
|
||||||
|
docker pull k8s.gcr.io/descheduler/descheduler:v0.20.0
|
||||||
|
kind load docker-image k8s.gcr.io/descheduler/descheduler:v0.20.0
|
||||||
|
```
|
||||||
|
|
||||||
## Policy Configuration Examples
|
## Policy Configuration Examples
|
||||||
The [examples](https://github.com/kubernetes-sigs/descheduler/tree/master/examples) directory has descheduler policy configuration examples.
|
The [examples](https://github.com/kubernetes-sigs/descheduler/tree/master/examples) directory has descheduler policy configuration examples.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user