Skip to content

OLS-3235 Make lightspeed-rag-content a multi-arch image#769

Open
onmete wants to merge 2 commits into
openshift:mainfrom
onmete:OLS-3235-multi-arch-image
Open

OLS-3235 Make lightspeed-rag-content a multi-arch image#769
onmete wants to merge 2 commits into
openshift:mainfrom
onmete:OLS-3235-multi-arch-image

Conversation

@onmete

@onmete onmete commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add arm64 build leg to own-app-lightspeed-rag-content Konflux pipelines to produce a multi-arch OCI manifest list (amd64 + arm64)
  • Unblocks lightspeed-service multi-arch builds which consume this image and were failing with: Base image ... has architecture 'amd64', expected 'arm64'
  • arm64 variant uses CPU-only PyTorch on ubi9/python-312 and produces identical vector DB content

Changes

File What
Containerfile Add REQUIREMENTS_FILE build arg for arch-specific deps
requirements.arm64.txt arm64 requirements (aarch64 torch wheel from RH registry)
.tekton/own-app-*-push.yaml Add build-container-arm64 task, enable image index
.tekton/own-app-*-pull-request.yaml Same as push pipeline

Design

  • arm64 build uses FLAVOR=cpu with ubi9/python-312 (multi-arch) as the builder base
  • Both amd64 (GPU) and arm64 (CPU) builds run in parallel after shared prefetch
  • build-image-index aggregates both arch images into a manifest list
  • Final ubi-minimal base image digest is already a manifest list with arm64 support (verified)
  • requirements.arm64.txt is identical to requirements.cpu.txt except torch points to the linux_aarch64.whl (hash verified by download)

Test plan

  • PR pipeline builds successfully for both amd64 and arm64
  • Resulting image has a proper manifest list with both architectures
  • lightspeed-service arm64 build can consume the new multi-arch image reference

References

Made with Cursor

Add arm64 build leg to the own-app-lightspeed-rag-content pipelines
to produce a proper OCI manifest list with both amd64 and arm64
variants. This unblocks Konflux multi-arch builds of lightspeed-service
which consumes this image.

Changes:
- Containerfile: add REQUIREMENTS_FILE build arg to support
  architecture-specific Python dependencies
- requirements.arm64.txt: arm64-compatible requirements with aarch64
  torch wheel from Red Hat package registry
- Pipeline YAMLs: add build-container-arm64 task using FLAVOR=cpu on
  linux/arm64, enable build-image-index to produce manifest list,
  prefetch both GPU and arm64 requirements

The arm64 variant uses CPU-only PyTorch on ubi9/python-312 (multi-arch)
as the builder and produces identical vector DB data. The final image
is ubi-minimal with architecture-independent content.

Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci openshift-ci Bot requested review from asamal4 and bparees June 5, 2026 08:18
@openshift-ci

openshift-ci Bot commented Jun 5, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign syedriko for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@onmete

onmete commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

/retest

The Red Hat torch CPU wheel requires libmpi_cxx.so.40 at runtime
(used for distributed tensor operations). On the GPU base image this
is pre-installed, but ubi9/python-312 (cpu-base) doesn't have it.

Fix by copying the OpenMPI shared libraries from the gpu-base stage
(which is already pulled during the build) into the builder stage
and updating the dynamic linker cache.

Co-authored-by: Cursor <cursoragent@cursor.com>
@syedriko

syedriko commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants