Support Multi-Arch Che (amd64, arm64, s390x, ppc64le) #19687
Labels
area/ci/multi-arch
Issues and PRs related to the release of images targeting architectures other than amd64
area/ci
CI build and releases, PR testing, & whitelabel/productization issues
kind/epic
A long-lived, PM-driven feature request. Must include a checklist of items that must be completed.
kind/task
Internal things, technical debt, and to-do tasks to be performed.
lifecycle/stale
Denotes an issue or PR has remained open with no activity and has become stale.
roadmap/1-year
Epics that are planned to complete in the short term (12 months or more)
severity/P3
Lower priority than a P2. Optional work that might get done, or not. See also help wanted issues.
Is your task related to a problem? Please describe.
Today, Che is an amd64 deployment, though some nightly and released images are multiarch (eg., che-dashboard). However, there are 34 images involved in a Che deployment (including 17 side car images) so setting up CI and release process for ALL images is not there yet, and this is a non-trivial task.
Describe the solution you'd like
1. Ensure all base images needed are multi-arch, including the sidecars
2. Ensure operator knows how to swap in arch-specific images (if applicable). In CRW, this is required when an openj9 variant is needed ons390x or ppc64le, in place of an openjdk image, either because there is no openjdk version for s390x or ppc64le, or simply for performance reasons (openj9 performs better). This is implemented in the Che operator already, but may not be implemented in the registries.
3. Build single images with podman/docker build for arm64 and amd64; use unique tags like :7.32.0-amd64
4. Build single images with travis for s390x and ppc64le; use unique tags like :7.32.0-s390x
5. Assemble individually tagged images into multiarch manifests using skopeo copy or docker manifest; use shared tags like :7.32.0
CACHE_IMAGE_FULL: docker.io/cheincubator/che-dashboard:cache
will work for collecting images into a single manifest, eg., https://github.com/eclipse-che/che-dashboard/blob/main/.github/workflows/ci-multiarch.yaml#L62-L71** Related issues:**
Working example (buildx only, no travis):
For a working example of creating multi-arch images/tags, then a combined manifest, see:
Note that the above solution for multi-arch build (qemu + buildx) only works for small images like che-dashboard.
For other, larger builds, s390x build fails... which is why Travis has been suggested as the way forward to introduce support for s390x and ppc64le.
Images involved in a Che deployment:
The text was updated successfully, but these errors were encountered: