Skip to content

Commit

Permalink
First implementation for arm images (kubernetes-sigs#1815)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
Raffo and njuettner committed Oct 15, 2020
1 parent 755edb4 commit b23151c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
13 changes: 5 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
29 changes: 26 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 .
Expand All @@ -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

0 comments on commit b23151c

Please sign in to comment.