feat!: add multi arch support#4843
Conversation
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
✅ Deploy Preview for zarf-docs canceled.
|
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
|
Thanks for putting this together. I’d like to better understand the direction you’re taking with this PR, and whether it’s intended to resolve the problem described in issue #2425. The move toward explicit architecture lists makes sense from a clarity and validation standpoint. However, I want to make sure a specific use case is considered, as it’s currently a blocker for me and may not be covered by architecture selection alone. In my workflow with FluxCD, images are pinned to an OCI index digest (not a platform-specific image). Because of that, the registry must contain the OCI index object itself, with the same digest. From what I understand, this PR focuses on selecting and validating architectures, but:
So even with this change, the index SHA wouldn’t exist in the air-gapped registry, and deployments would still fail. The key requirement on my side is the ability to pull, package, and push an OCI index as-is, preserving its digest. Can you confirm whether this PR is expected to support that, or if this would need to be handled separately? |
|
Good question @Femure. Index sha's will be supported for pulling and pushing index sha's when multiple architectures are selected. We definitely want to keep this case around, as it is the most secure route. When a tag is used, then Zarf will pull only the architectures for that tag. When an index sha is used then Zarf will pull every platform to keep the index in sync |
|
Thanks for the clarification, that makes things much clearer. Glad to hear that OCI index SHAs will be preserved when using them, that fully addresses my use case. I’m looking forward to seeing this PR progress and hopefully get merged soon 🙂 |
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
|
This PR has ballooned in size, and I feel it is hard to review. Going to break in into three parts:
|
Breaking changes
Breaking changes are only in the SDK. ImagesWithManifests->PulledImage. This removes manifests from the struct. Instead of having to collect the manifest in several places (indexes, image archives, daemon) we check the manifest before we create the SBOM, this was our only use case for it The name PulledImage should be more resistant to future breaking changes.
UnpackandPullreturnPulledImagenow.Description
This adds multi arch support thorough a special package architecture "multi"
We may want to change
zarf package pullso that if a multi platform exists for a Zarf OCI package, when runningzarf package pull <package-oci-ref>we fallback to pull multi. This PR is already large so I didn't change anything atm.This adds a minimum version check for v0.76.0. Also worth noting that if a multi arch package is pulled from an earlier version of Zarf then Zarf will panic, since it assumed the index.json in an OCI layout will only have manifests.
Related Issue
Relates to #2425 (arguably fixes though we may want to keep it open or break it out into other issues such as packaging only x and y architecture).
Checklist before merging