Skip to content

Commit 11378f5

Browse files
authored
Merge pull request #265 from oshoval/z
Support s390x build (IBM Z)
2 parents 90b7e87 + 3f1320d commit 11378f5

File tree

3 files changed

+26
-18
lines changed

3 files changed

+26
-18
lines changed

Dockerfile

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
# Use an ARG to select which build target to compile and use
22
ARG TARGET_BUILD=standard
3-
ARG BINARY_NAME=kube-network-policies-${TARGET_BUILD}
43

54
FROM --platform=$BUILDPLATFORM golang:1.24 AS builder
65
WORKDIR /src
6+
7+
# Get target architecture for cross-compilation
8+
ARG TARGETOS
9+
ARG TARGETARCH
10+
ARG TARGET_BUILD
11+
712
COPY go.mod go.sum ./
813
RUN go mod download
914
COPY . .
1015

11-
# Build the specific binary based on the build argument
12-
ARG TARGET_BUILD
13-
RUN make build-${TARGET_BUILD}
16+
# Build the specific binary based on the build argument and target architecture
17+
RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} make build-${TARGET_BUILD}
1418

1519
# STEP 2: Build small image
1620
FROM gcr.io/distroless/static-debian12
17-
ARG BINARY_NAME
18-
COPY --from=builder /src/bin/${BINARY_NAME} /bin/netpol
21+
ARG TARGET_BUILD
22+
COPY --from=builder /src/bin/kube-network-policies-${TARGET_BUILD} /bin/netpol
1923

2024
# The entrypoint is always the same, regardless of the build
2125
CMD ["/bin/netpol"]

Dockerfile.iptracker

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
# Use an ARG to select which build target to compile and use
22
ARG TARGET_BUILD=standard
3-
ARG BINARY_NAME=kube-ip-tracker-${TARGET_BUILD}
43

54
FROM --platform=$BUILDPLATFORM golang:1.24 AS builder
65

76
WORKDIR /src
87

8+
# Get target architecture for cross-compilation
9+
ARG TARGETOS
10+
ARG TARGETARCH
11+
ARG TARGET_BUILD
12+
913
COPY . .
1014
RUN go mod download
1115

12-
# Build the specific binary based on the build argument
13-
ARG TARGET_BUILD
14-
RUN make build-kube-ip-tracker-${TARGET_BUILD}
16+
# Build the specific binary based on the build argument and target architecture
17+
RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} make build-kube-ip-tracker-${TARGET_BUILD}
1518

1619
# STEP 2: Build small image
1720
FROM gcr.io/distroless/static-debian12
18-
ARG BINARY_NAME
19-
COPY --from=builder /src/bin/${BINARY_NAME} /bin/kube-ip-tracker
21+
ARG TARGET_BUILD
22+
COPY --from=builder /src/bin/kube-ip-tracker-${TARGET_BUILD} /bin/kube-ip-tracker
2023

2124
# The entrypoint is always the same, regardless of the build
2225
CMD ["/bin/kube-ip-tracker"]

Makefile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,31 @@ export GO111MODULE CGO_ENABLED
1010
IMAGE_NAME?=kube-network-policies
1111
REGISTRY?=gcr.io/k8s-staging-networking
1212
TAG?=$(shell echo "$$(date +v%Y%m%d)-$$(git describe --always --dirty)")
13-
PLATFORMS?=linux/amd64,linux/arm64
13+
PLATFORMS?=linux/amd64,linux/arm64,linux/s390x
1414

1515
.PHONY: all build build-standard build-npa-v1alpha1 build-npa-v1alpha2 build-iptracker build-kube-ip-tracker-standard
1616

1717
build: build-standard build-npa-v1alpha1 build-npa-v1alpha2 build-iptracker build-kube-ip-tracker-standard
1818

1919
build-standard:
2020
@echo "Building standard binary..."
21-
go build -o ./bin/kube-network-policies-standard ./cmd/kube-network-policies/standard
21+
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o ./bin/kube-network-policies-standard ./cmd/kube-network-policies/standard
2222

2323
build-npa-v1alpha1:
2424
@echo "Building npa-v1alpha1 binary..."
25-
go build -o ./bin/kube-network-policies-npa-v1alpha1 ./cmd/kube-network-policies/npa-v1alpha1
25+
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o ./bin/kube-network-policies-npa-v1alpha1 ./cmd/kube-network-policies/npa-v1alpha1
2626

2727
build-npa-v1alpha2:
2828
@echo "Building npa-v1alpha2 binary..."
29-
go build -o ./bin/kube-network-policies-npa-v1alpha2 ./cmd/kube-network-policies/npa-v1alpha2
29+
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o ./bin/kube-network-policies-npa-v1alpha2 ./cmd/kube-network-policies/npa-v1alpha2
3030

3131
build-iptracker:
3232
@echo "Building iptracker binary..."
33-
go build -o ./bin/kube-network-policies-iptracker ./cmd/kube-network-policies/iptracker
33+
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o ./bin/kube-network-policies-iptracker ./cmd/kube-network-policies/iptracker
3434

3535
build-kube-ip-tracker-standard:
3636
@echo "Building kube-ip-tracker binary..."
37-
go build -o ./bin/kube-ip-tracker-standard ./cmd/kube-ip-tracker/standard
37+
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o ./bin/kube-ip-tracker-standard ./cmd/kube-ip-tracker/standard
3838

3939
clean:
4040
rm -rf "$(OUT_DIR)/"
@@ -118,6 +118,7 @@ image-push-iptracker: build-iptracker
118118
image-push-kube-ip-tracker-standard: build-kube-ip-tracker-standard
119119
docker buildx build . -f Dockerfile.iptracker \
120120
--build-arg TARGET_BUILD=standard \
121+
--platform="${PLATFORMS}" \
121122
--tag="${REGISTRY}/kube-ip-tracker:$(TAG)" \
122123
--push
123124

0 commit comments

Comments
 (0)