-
Notifications
You must be signed in to change notification settings - Fork 179
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
Revisit the Design of ORAS #304
Comments
3 tasks
For releasing 1.0 having a clear idea of all exposed types have to be agreed upon. |
I think given the number of request to show manifests - I've started a discussion here - #340 |
shizhMSFT
added
question
Further information is requested
stale
Inactive issues or pull requests
labels
Jun 28, 2023
This issue was closed because it has been stalled for 30 days with no activity. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Originally, ORAS is designed to upload any files to the registry, mapping the file to the layer blob. Therefore, the remote layer blob can be downloaded to the local disk and renamed according to the
org.opencontainers.image.title
in the annotation field without further operations like untar, decompressing, or even sequential extraction.Example manifest:
Apparently, it does not support directories but files. How do we support directories? It is as simple as packing the directory into a tarball and mark it to be unpacked when pulled.
Then it leads to a question what if we blindly extract
tar
ortar+gzip
blob without seeing"io.deis.oras.content.unpack": "true"
? Well, it causes ambiguity thatcache
in the above manifest can be a directory and it can also be a file. Hence, those annotations in the manifests are necessary.Taking the Helm chart pushed by the ORAS library as example:
Unless the client has the context of Helm, it does not know how to deal with the layer blob with the media type
application/tar+gzip
.As a result, the ORAS cli has no means to pull the above Helm chart artifact although it is pushed via the ORAS library.
@SteveLasker proposed
that we can always pack and compress the desired file before pushing to the registry so that all file metadata are kept in the tarball and thus make the annotations in the manifest clean.
However, that proposal has two major drawbacks:
Here is the next question: Can we enhance ORAS to take the advantages of both paradigms? The answer is probably yes.
We can classify the manifests into 3 categories:
For 1, we can pull it using the default ORAS behavior.
For 2, we cannot download and process the layer blobs in parallel. Instead, we should download and process the layer blobs in a sequential order. The layer blobs with annotations are processed using the default ORAS behavior, and those unnamed tarballs are processed by extracting to the current working directory.
For 3, ORAS can give the user an option to ignore those unnamed non-tarballs or process them. If the user choose to ignore them, we fall into catagory 1 & 2. Otherwise, the same method for catagory 2 is applied and those unnamed non-tarballs are downloaded and renamed according to their digests.
The text was updated successfully, but these errors were encountered: