fix(backend): enable multi-arch (amd64, arm64) builds for KFP images. Fixes #12705 #12727
+18
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR enables multi-architecture (linux/amd64 + linux/arm64) support for Kubeflow Pipelines (KFP) container images so they can run correctly on ARM64 clusters (e.g., Apple Silicon, AWS Graviton, Ampere) without exec format error.
What was changed
1. CI: Enable multi-arch image builds
This publishes each kfp-* image as a multi-arch manifest list so Kubernetes automatically pulls the correct image for the node architecture.
2. Fix architecture-specific binaries in Dockerfiles
Some KFP images download prebuilt binaries that were hardcoded to amd64. These were updated to be architecture-aware using TARGETARCH.
kubectl is now downloaded from:
backend/Dockerfile.visualization
Google Cloud SDK tarball is selected based on:
amd64 → x86_64arm64 → armGo-based images (e.g., persistenceagent, scheduledworkflow, etc.) already build cleanly on multi-arch base images and did not require changes.
How to verify :
After CI runs, the images should be published as multi-arch OCI manifests.
This can be verified with:
Expected output should list:
This allows Kubeflow Pipelines to run successfully on ARM64 Kubernetes clusters without exec format error.
Fixes #12705.