Skip to content

Commit bfd67ac

Browse files
authored
Add support for (local) multiplatform container images build (#1693)
1 parent 50a8842 commit bfd67ac

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

Dockerfile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
############# builder
2-
FROM golang:1.26.0 AS builder
2+
FROM --platform=$BUILDPLATFORM golang:1.26.0 AS builder
33

44
WORKDIR /go/src/github.com/gardener/gardener-extension-provider-aws
55

@@ -11,8 +11,10 @@ RUN go mod download
1111
COPY . .
1212

1313
ARG EFFECTIVE_VERSION
14+
ARG TARGETOS
15+
ARG TARGETARCH
1416

15-
RUN make install EFFECTIVE_VERSION=$EFFECTIVE_VERSION
17+
RUN make build GOOS=$TARGETOS GOARCH=$TARGETARCH EFFECTIVE_VERSION=$EFFECTIVE_VERSION BUILD_OUTPUT_FILE="/output/bin/"
1618

1719
############# base
1820
FROM gcr.io/distroless/static-debian12:nonroot AS base
@@ -21,12 +23,12 @@ FROM gcr.io/distroless/static-debian12:nonroot AS base
2123
FROM base AS gardener-extension-provider-aws
2224
WORKDIR /
2325

24-
COPY --from=builder /go/bin/gardener-extension-provider-aws /gardener-extension-provider-aws
26+
COPY --from=builder /output/bin/gardener-extension-provider-aws /gardener-extension-provider-aws
2527
ENTRYPOINT ["/gardener-extension-provider-aws"]
2628

2729
############# gardener-extension-admission-aws
2830
FROM base AS gardener-extension-admission-aws
2931
WORKDIR /
3032

31-
COPY --from=builder /go/bin/gardener-extension-admission-aws /gardener-extension-admission-aws
33+
COPY --from=builder /output/bin/gardener-extension-admission-aws /gardener-extension-admission-aws
3234
ENTRYPOINT ["/gardener-extension-admission-aws"]

Makefile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ WEBHOOK_CONFIG_URL := host.docker.internal:$(WEBHOOK_CONFIG_PORT)
2323
EXTENSION_NAMESPACE := garden
2424
GARDEN_KUBECONFIG ?=
2525

26-
PLATFORM := linux/amd64
26+
TARGET_PLATFORMS ?= linux/$(shell go env GOARCH)
2727

2828
WEBHOOK_PARAM := --webhook-config-url=$(WEBHOOK_CONFIG_URL)
2929
ifeq ($(WEBHOOK_CONFIG_MODE), service)
@@ -97,17 +97,25 @@ install:
9797
@LD_FLAGS=$(LD_FLAGS) EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) \
9898
bash $(GARDENER_HACK_DIR)/install.sh ./...
9999

100+
BUILD_OUTPUT_FILE ?= .
101+
BUILD_PACKAGES ?= ./...
102+
103+
.PHONY: build
104+
build:
105+
@LD_FLAGS=$(LD_FLAGS) EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) \
106+
bash $(GARDENER_HACK_DIR)/build.sh -o $(BUILD_OUTPUT_FILE) $(BUILD_PACKAGES)
107+
100108
.PHONY: docker-login
101109
docker-login:
102110
@gcloud auth activate-service-account --key-file .kube-secrets/gcr/gcr-readwrite.json
103111

104112
.PHONY: docker-image-provider
105113
docker-image-provider:
106-
@docker buildx build --load --platform=$(PLATFORM) --build-arg EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) -t $(IMAGE_PREFIX)/$(NAME):$(VERSION) -t $(IMAGE_PREFIX)/$(NAME):latest -f Dockerfile -m 6g --target $(EXTENSION_PREFIX)-$(NAME) .
114+
@docker buildx build --load --platform=$(TARGET_PLATFORMS) --build-arg EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) -t $(IMAGE_PREFIX)/$(NAME):$(VERSION) -t $(IMAGE_PREFIX)/$(NAME):latest -f Dockerfile -m 6g --target $(EXTENSION_PREFIX)-$(NAME) .
107115

108116
.PHONY: docker-image-admission
109117
docker-image-admission:
110-
@docker buildx build --load --platform=$(PLATFORM) --build-arg EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) -t $(IMAGE_PREFIX)/$(ADMISSION_NAME):$(VERSION) -t $(IMAGE_PREFIX)/$(ADMISSION_NAME):latest -f Dockerfile -m 6g --target $(EXTENSION_PREFIX)-$(ADMISSION_NAME) .
118+
@docker buildx build --load --platform=$(TARGET_PLATFORMS) --build-arg EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) -t $(IMAGE_PREFIX)/$(ADMISSION_NAME):$(VERSION) -t $(IMAGE_PREFIX)/$(ADMISSION_NAME):latest -f Dockerfile -m 6g --target $(EXTENSION_PREFIX)-$(ADMISSION_NAME) .
111119

112120
.PHONY: docker-images
113121
docker-images: docker-image-provider docker-image-admission

0 commit comments

Comments
 (0)