New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CLID-17: feat: docker v2s2 manifest list / oci image index implementation #810
Conversation
@aguidirh: This pull request references CLID-17 which is a valid jira issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: aguidirh The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi Alex,
Thanks for your hard work.
As discussed, I am a bit concerned about the impact on digest preservation. Can we make sure the digests are preserved for all images even when the user does not explicitely use the --all
flag?
The default behavior of oc-mirror v2 (no --all flag in the command line) will change from multi-arch to single-arch (compatible with current arch) with this PR.
So the scenario that hurts most for people switching from v1 to v2 is:
- v2: I mirror using a MAC for a cluster that has AMD, without setting the --all flag. I'll end up with images that aren't usable for the cluster.
- v1: I mirror using a MAC for a cluster that has AMD, the images mirrored work on the cluster because they are all multi arch by default
238e7eb
to
6e091bd
Compare
…ndex implementation
@aguidirh: all tests passed! Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
@aguidirh: This pull request references CLID-17 which is a valid jira issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
/hold |
@aguidirh - followed the steps described in your initial comment, only thing is I had to do is
to get the correct tag (mine was 3fbd5128aae6920fdabe9d42f1658fe14d97d0dd78ef00dd48345147282bca5b) I could then download the multi from the remote registry
Then continued to verify the contents of each |
@aguidirh - nice work !!!. I liked the clear steps to verify this PR |
/unhold |
/label acknowledge-critical-fixes-only |
/label acknowledge-critical-fixes-only |
[ART PR BUILD NOTIFIER] This PR has been included in build oc-mirror-plugin-container-v4.16.0-202403180813.p0.g0a82d04.assembly.stream.el9 for distgit oc-mirror-plugin. |
Description
This PR contains changes required to allow the mirroring of multi-arch operator catalogs (manifest list / OCI image index).
The changes presented here take into account the case where the index.json contains a reference to a manifest list inside of blobs/sha256 folder and also when the index.json contains the platform information directly.
CLID-17
Type of change
Please delete options that are not relevant.
Mirroring multi-arch catalog (manifest list) scenario
Step 0 - Get the oci redhat-operator-index multi-arch with skopeo
Use this ImageSetConfiguration
Step 1 - mirror to disk
Step 2 - disk to mirror
Step 3 - skopeo copy from your local registry to check the binaries
Check the index.json which must be a reference to a manifest list inside of blobs/sha256 folder with for archs (amd64, arm, ppc, s390x)
Step 4 - create folder to store the binaries by arch
Step 5 - untar all the blobs which contains the opm binary
untar opm for amd64
untar opm for arm
untar opm for ppc
untar opm for s390x
Step 6 (last one) - Check if the binaries extracted are the expected by arch
amd64 opm binary
Expected output:
arm opm binary
Expected output:
ppc opm binary
Expected output:
s390x opm binary
Expected output: