Skip to content

Commit c5cb3fa

Browse files
authored
Merge pull request #925 from upodroid/docker-fix
make the docker image multi-arch
2 parents a4cfad1 + 3d4156b commit c5cb3fa

File tree

3 files changed

+34
-25
lines changed

3 files changed

+34
-25
lines changed

Dockerfile

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
ARG GOARCH="amd64"
2-
3-
FROM golang:1.24.5 AS builder
1+
FROM golang:1.24.10 AS builder
42
# golang envs
5-
ARG GOARCH="amd64"
3+
ARG TARGETARCH
64
ARG GOOS=linux
75
ENV CGO_ENABLED=0
6+
ENV GOARCH=${TARGETARCH}
87

98
WORKDIR /go/src/app
109
COPY go.mod go.sum ./
@@ -17,7 +16,7 @@ COPY providers/ providers/
1716

1817
RUN CGO_ENABLED=0 go build -o /go/bin/cloud-controller-manager ./cmd/cloud-controller-manager
1918

20-
FROM registry.k8s.io/build-image/go-runner:v2.4.0-go1.24.0-bookworm.0
19+
FROM registry.k8s.io/build-image/go-runner:v2.4.0-go1.24.10-bookworm.0
2120
COPY --from=builder --chown=root:root /go/bin/cloud-controller-manager /cloud-controller-manager
2221
CMD ["/cloud-controller-manager"]
23-
ENTRYPOINT ["/cloud-controller-manager"]
22+
ENTRYPOINT ["/cloud-controller-manager"]

cloudbuild.yaml

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,93 +3,96 @@
33
timeout: 3600s
44
options:
55
substitution_option: ALLOW_LOOSE
6+
machineType: E2_HIGHCPU_32
67
steps:
7-
- name: 'gcr.io/cloud-builders/docker'
8+
- name: "gcr.io/cloud-builders/docker"
89
env:
910
- IMAGE_REPO=${_IMAGE_REPO}
1011
- IMAGE_TAG=${_PULL_BASE_REF}
12+
- CI=1
13+
- BUILDX_NO_DEFAULT_ATTESTATIONS=1
1114
entrypoint: tools/push-images
1215
# build gke-gcloud-auth-plugin binary
13-
- name: 'gcr.io/cloud-builders/bazel'
16+
- name: "gcr.io/cloud-builders/bazel"
1417
args:
1518
- --output_user_root=/workspace/bazel-root
1619
- --output_base=/workspace/bazel-base-linux-amd64
1720
- build
1821
- //cmd/gke-gcloud-auth-plugin
19-
- name: 'gcr.io/cloud-builders/gsutil'
22+
- name: "gcr.io/cloud-builders/gsutil"
2023
args:
2124
- cp
2225
- /workspace/bazel-base-linux-amd64/execroot/io_k8s_cloud_provider_gcp/bazel-out/k8-fastbuild/bin/cmd/gke-gcloud-auth-plugin/gke-gcloud-auth-plugin_/gke-gcloud-auth-plugin
2326
- gs://k8s-staging-cloud-provider-gcp/gke-gcloud-auth-plugin/linux-amd64/${_GIT_TAG}
2427
# build auth-provider-gcp binary
25-
- name: 'gcr.io/cloud-builders/bazel'
28+
- name: "gcr.io/cloud-builders/bazel"
2629
args:
2730
- --output_user_root=/workspace/bazel-root
2831
- --output_base=/workspace/bazel-base-linux-amd64
2932
- build
3033
- //cmd/auth-provider-gcp
31-
- name: 'gcr.io/cloud-builders/gsutil'
34+
- name: "gcr.io/cloud-builders/gsutil"
3235
args:
3336
- cp
3437
- /workspace/bazel-base-linux-amd64/execroot/io_k8s_cloud_provider_gcp/bazel-out/k8-fastbuild/bin/cmd/auth-provider-gcp/auth-provider-gcp_/auth-provider-gcp
3538
- gs://k8s-staging-cloud-provider-gcp/auth-provider-gcp/linux-amd64/${_GIT_TAG}
3639
# build gke-gcloud-auth-plugin binary
37-
- name: 'gcr.io/cloud-builders/bazel'
40+
- name: "gcr.io/cloud-builders/bazel"
3841
args:
3942
- --output_user_root=/workspace/bazel-root
4043
- --output_base=/workspace/bazel-base-linux-arm64
4144
- build
4245
- --platforms=@io_bazel_rules_go//go/toolchain:linux_arm64
4346
- //cmd/gke-gcloud-auth-plugin
44-
- name: 'gcr.io/cloud-builders/gsutil'
47+
- name: "gcr.io/cloud-builders/gsutil"
4548
args:
4649
- cp
4750
- /workspace/bazel-base-linux-arm64/execroot/io_k8s_cloud_provider_gcp/bazel-out/k8-fastbuild/bin/cmd/gke-gcloud-auth-plugin/gke-gcloud-auth-plugin_/gke-gcloud-auth-plugin
4851
- gs://k8s-staging-cloud-provider-gcp/gke-gcloud-auth-plugin/linux-arm64/${_GIT_TAG}
4952
# build auth-provider-gcp binary
50-
- name: 'gcr.io/cloud-builders/bazel'
53+
- name: "gcr.io/cloud-builders/bazel"
5154
args:
5255
- --output_user_root=/workspace/bazel-root
5356
- --output_base=/workspace/bazel-base-linux-arm64
5457
- build
5558
- --platforms=@io_bazel_rules_go//go/toolchain:linux_arm64
5659
- //cmd/auth-provider-gcp
57-
- name: 'gcr.io/cloud-builders/gsutil'
60+
- name: "gcr.io/cloud-builders/gsutil"
5861
args:
5962
- cp
6063
- /workspace/bazel-base-linux-arm64/execroot/io_k8s_cloud_provider_gcp/bazel-out/k8-fastbuild/bin/cmd/auth-provider-gcp/auth-provider-gcp_/auth-provider-gcp
6164
- gs://k8s-staging-cloud-provider-gcp/auth-provider-gcp/linux-arm64/${_GIT_TAG}
6265
# build gke-gcloud-auth-plugin binary
63-
- name: 'gcr.io/cloud-builders/bazel'
66+
- name: "gcr.io/cloud-builders/bazel"
6467
args:
6568
- --output_user_root=/workspace/bazel-root
6669
- --output_base=/workspace/bazel-base-windows-amd64
6770
- build
6871
- --platforms=@io_bazel_rules_go//go/toolchain:windows_amd64
6972
- //cmd/gke-gcloud-auth-plugin
70-
- name: 'gcr.io/cloud-builders/gsutil'
73+
- name: "gcr.io/cloud-builders/gsutil"
7174
args:
7275
- cp
7376
- /workspace/bazel-base-windows-amd64/execroot/io_k8s_cloud_provider_gcp/bazel-out/k8-fastbuild/bin/cmd/gke-gcloud-auth-plugin/gke-gcloud-auth-plugin_/gke-gcloud-auth-plugin.exe
7477
- gs://k8s-staging-cloud-provider-gcp/gke-gcloud-auth-plugin/windows-amd64/${_GIT_TAG}
7578
# build auth-provider-gcp binary
76-
- name: 'gcr.io/cloud-builders/bazel'
79+
- name: "gcr.io/cloud-builders/bazel"
7780
args:
7881
- --output_user_root=/workspace/bazel-root
7982
- --output_base=/workspace/bazel-base-windows-amd64
8083
- build
8184
- --platforms=@io_bazel_rules_go//go/toolchain:windows_amd64
8285
- //cmd/auth-provider-gcp
83-
- name: 'gcr.io/cloud-builders/gsutil'
86+
- name: "gcr.io/cloud-builders/gsutil"
8487
args:
8588
- cp
8689
- /workspace/bazel-base-windows-amd64/execroot/io_k8s_cloud_provider_gcp/bazel-out/k8-fastbuild/bin/cmd/auth-provider-gcp/auth-provider-gcp_/auth-provider-gcp.exe
8790
- gs://k8s-staging-cloud-provider-gcp/auth-provider-gcp/windows-amd64/${_GIT_TAG}
8891
# TODO: figure out how to do this better, most probably getting rid of bazel
8992
substitutions:
90-
_PULL_BASE_REF: 'master'
91-
_GIT_TAG: '12345'
92-
_IMAGE_REPO: 'gcr.io/k8s-staging-cloud-provider-gcp'
93+
_PULL_BASE_REF: "master"
94+
_GIT_TAG: "12345"
95+
_IMAGE_REPO: "gcr.io/k8s-staging-cloud-provider-gcp"
9396
tags:
94-
- 'cloud-provider-gcp'
97+
- "cloud-provider-gcp"
9598
- ${_GIT_TAG}

tools/push-images

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,16 @@ else
4444
echo "IMAGE_TAG=${IMAGE_TAG}"
4545
fi
4646

47+
if [ -n "${CI:-}" ]; then
48+
docker run --privileged --rm tonistiigi/binfmt --install all
49+
docker buildx create \
50+
--name multiarch-multiplatform-builder \
51+
--driver docker-container \
52+
--bootstrap --use
53+
fi
54+
4755
if [[ "${COMPONENT:-ccm}" == "ccm" ]]; then
48-
docker build -t ${IMAGE_REPO}/cloud-controller-manager:${IMAGE_TAG} .
49-
docker push ${IMAGE_REPO}/cloud-controller-manager:${IMAGE_TAG}
56+
docker buildx build --platform linux/arm64,linux/amd64 -t ${IMAGE_REPO}/cloud-controller-manager:${IMAGE_TAG} . --push
5057
else
5158
echo "Skipping CCM build, because component is ${COMPONENT}"
5259
fi

0 commit comments

Comments
 (0)