mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-07 01:56:57 +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.
|
# limitations under the License.
|
||||||
|
|
||||||
# builder image
|
# builder image
|
||||||
|
ARG ARCH
|
||||||
FROM golang:1.14 as builder
|
FROM golang:1.14 as builder
|
||||||
|
ARG ARCH
|
||||||
|
|
||||||
WORKDIR /sigs.k8s.io/external-dns
|
WORKDIR /sigs.k8s.io/external-dns
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN go mod vendor && \
|
RUN make test && make build.$ARCH
|
||||||
make test && \
|
|
||||||
make build
|
|
||||||
|
|
||||||
# final image
|
# final image
|
||||||
FROM alpine:3.12
|
FROM $ARCH/alpine:3.12
|
||||||
LABEL maintainer="Team Teapot @ Zalando SE <team-teapot@zalando.de>"
|
|
||||||
|
|
||||||
RUN apk add --update --no-cache ca-certificates && \
|
|
||||||
update-ca-certificates
|
|
||||||
|
|
||||||
|
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
|
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:
|
# 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)
|
VERSION ?= $(shell git describe --tags --always --dirty)
|
||||||
BUILD_FLAGS ?= -v
|
BUILD_FLAGS ?= -v
|
||||||
LDFLAGS ?= -X sigs.k8s.io/external-dns/pkg/apis/externaldns.Version=$(VERSION) -w -s
|
LDFLAGS ?= -X sigs.k8s.io/external-dns/pkg/apis/externaldns.Version=$(VERSION) -w -s
|
||||||
|
ARCHS = arm64v8 amd64
|
||||||
|
SHELL = /bin/bash
|
||||||
|
|
||||||
|
|
||||||
build: build/$(BINARY)
|
build: build/$(BINARY)
|
||||||
|
|
||||||
build/$(BINARY): $(SOURCES)
|
build/$(BINARY): $(SOURCES)
|
||||||
CGO_ENABLED=0 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
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
|
build.push: build.docker
|
||||||
docker push "$(IMAGE):$(VERSION)"
|
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:
|
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:
|
build.mini:
|
||||||
docker build --rm --tag "$(IMAGE):$(VERSION)-mini" --build-arg VERSION="$(VERSION)" -f Dockerfile.mini .
|
docker build --rm --tag "$(IMAGE):$(VERSION)-mini" --build-arg VERSION="$(VERSION)" -f Dockerfile.mini .
|
||||||
@ -90,7 +113,7 @@ clean:
|
|||||||
.PHONY: release.staging
|
.PHONY: release.staging
|
||||||
|
|
||||||
release.staging:
|
release.staging:
|
||||||
IMAGE=$(IMAGE_STAGING) $(MAKE) build.docker build.push
|
IMAGE=$(IMAGE_STAGING) $(MAKE) build.push/multiarch
|
||||||
|
|
||||||
release.prod:
|
release.prod:
|
||||||
$(MAKE) build.docker build.push
|
$(MAKE) build.push/multiarch
|
||||||
|
Loading…
Reference in New Issue
Block a user