mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 01:26:59 +02:00
First implementation for arm images (#1815)
* multiarch init Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * change Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * codespaces Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * add amd64 arch * changes Signed-off-by: GitHub <noreply@github.com> * test Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * changes * ch-changes Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * do not install certs Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * save Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * try amd64 Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * amd64 Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * remove devcontainer Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * tests Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * changes Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com> * Update Makefile Co-authored-by: Nick Jüttner <nick@juni.io> * Update Makefile Co-authored-by: Nick Jüttner <nick@juni.io> * Update Makefile Co-authored-by: Nick Jüttner <nick@juni.io> Co-authored-by: Nick Jüttner <nick@juni.io>
This commit is contained in:
parent
755edb400f
commit
b23151c291
13
Dockerfile
13
Dockerfile
@ -13,22 +13,19 @@
|
||||
# limitations under the License.
|
||||
|
||||
# builder image
|
||||
ARG ARCH
|
||||
FROM golang:1.14 as builder
|
||||
ARG ARCH
|
||||
|
||||
WORKDIR /sigs.k8s.io/external-dns
|
||||
|
||||
COPY . .
|
||||
RUN go mod vendor && \
|
||||
make test && \
|
||||
make build
|
||||
RUN make test && make build.$ARCH
|
||||
|
||||
# final image
|
||||
FROM alpine:3.12
|
||||
LABEL maintainer="Team Teapot @ Zalando SE <team-teapot@zalando.de>"
|
||||
|
||||
RUN apk add --update --no-cache ca-certificates && \
|
||||
update-ca-certificates
|
||||
FROM $ARCH/alpine:3.12
|
||||
|
||||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||
COPY --from=builder /sigs.k8s.io/external-dns/build/external-dns /bin/external-dns
|
||||
|
||||
# Run as UID for nobody since k8s pod securityContext runAsNonRoot can't resolve the user ID:
|
||||
|
29
Makefile
29
Makefile
@ -68,17 +68,40 @@ IMAGE ?= us.gcr.io/k8s-artifacts-prod/external-dns/$(BINARY)
|
||||
VERSION ?= $(shell git describe --tags --always --dirty)
|
||||
BUILD_FLAGS ?= -v
|
||||
LDFLAGS ?= -X sigs.k8s.io/external-dns/pkg/apis/externaldns.Version=$(VERSION) -w -s
|
||||
ARCHS = arm64v8 amd64
|
||||
SHELL = /bin/bash
|
||||
|
||||
|
||||
build: build/$(BINARY)
|
||||
|
||||
build/$(BINARY): $(SOURCES)
|
||||
CGO_ENABLED=0 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
||||
|
||||
build.push/multiarch:
|
||||
arch_specific_tags=()
|
||||
for arch in $(ARCHS); do \
|
||||
image="$(IMAGE):$(VERSION)-$${arch}" ;\
|
||||
DOCKER_BUILDKIT=1 docker build --rm --tag $${image} --build-arg VERSION="$(VERSION)" --build-arg ARCH="$${arch}" . ;\
|
||||
docker push $${image} ;\
|
||||
arch_specific_tags+=( "--amend $${image}" ) ;\
|
||||
done ;\
|
||||
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create "$(IMAGE):$(VERSION)" $${arch_specific_tags[@]} ;\
|
||||
for arch in $(ARCHS); do \
|
||||
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate --arch $${arch} "$(IMAGE):$(VERSION)" "$(IMAGE):$(VERSION)-$${arch}" ;\
|
||||
done;\
|
||||
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(IMAGE):$(VERSION)" \
|
||||
|
||||
build.push: build.docker
|
||||
docker push "$(IMAGE):$(VERSION)"
|
||||
|
||||
build.arm64v8:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
||||
|
||||
build.amd64:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
||||
|
||||
build.docker:
|
||||
docker build --rm --tag "$(IMAGE):$(VERSION)" --build-arg VERSION="$(VERSION)" .
|
||||
docker build --rm --tag "$(IMAGE):$(VERSION)" --build-arg VERSION="$(VERSION)" --build-arg ARCH="amd64" .
|
||||
|
||||
build.mini:
|
||||
docker build --rm --tag "$(IMAGE):$(VERSION)-mini" --build-arg VERSION="$(VERSION)" -f Dockerfile.mini .
|
||||
@ -90,7 +113,7 @@ clean:
|
||||
.PHONY: release.staging
|
||||
|
||||
release.staging:
|
||||
IMAGE=$(IMAGE_STAGING) $(MAKE) build.docker build.push
|
||||
IMAGE=$(IMAGE_STAGING) $(MAKE) build.push/multiarch
|
||||
|
||||
release.prod:
|
||||
$(MAKE) build.docker build.push
|
||||
$(MAKE) build.push/multiarch
|
||||
|
Loading…
Reference in New Issue
Block a user