-
Notifications
You must be signed in to change notification settings - Fork 71
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
Proposal for adding commands to handle manifest list in pack #283
Proposal for adding commands to handle manifest list in pack #283
Conversation
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Maintainers, As you review this RFC please queue up issues to be created using the following commands:
Issues(none) |
Co-authored-by: Aidan Delaney <adelaney21@bloomberg.net> Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
|
||
Why should we *not* do this? | ||
|
||
We should decide to do not add this feature and users could use tools like `docker` or `podman` to create and handle their manifest list, however this is a poor user experience forcing users to use different tools to fulfill scenarios that are part of the business domain of pack. |
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.
I would agree with this if it required additional tools to be installed. If you're using pack
, you have docker
or podman
already though, so I'm not sure it's really that big of a deal. Just my $0.02.
One thing that has been a little weird working with multi-arch support and image indexes is that the different images do not have to be the same for each arch. My amd64 image can be quite different from the arm64 image. I'm not entirely sure how I feel about that. In terms of buildpacks, I feel like it seems logical that the two could be different. Maybe a particular buildpack doesn't function on arm64 (maybe there are just no binaries that it needs)? So you don't include that one. The problem is that I think users will expect them to be the same, and I don't think there is presently a good way for users to interrogate and see what's in each architecture. If you I'm not 100% sure that's relevant here, but I wanted to mention this as it was a sticking point with multi-arch images. |
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Is this ready for review? |
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
I just added this to try to address this requirement, thanks for your feedback an let me know how it looks! |
Hi @jkutner ! Yes, I think it is ready for a review, it is not perfect but I put most of the stuff I had in mind for these new set of commands. I will be taking some days off (3 weeks) but Jerico or Husni will follow up on this, the idea is to get all the feedback as possible. |
I'm not a fan of introducing such low level concepts like a manifest to buildpack authors. If all I want to do is to get my image working on popular platforms (linux/amd64, linux/arm64, windows/amd64), I shouldn't have to learn what a manifest is, how to add images to manifests, and how to annotate each image on the manifests with the os/arch. I don't see a point of doing this through pack when there's plenty of other more dedicated options for it (as you said, What I would like to see is for Create an (empty) image index
Images are added to it while specifying the os and arch
One downside(?) with this approach is that these instructions actually generate an image index for each step, which means we end up with 3 indexes at the end. I don't think this actually matters because I think most registry garbage collection is based on tags and not digests/manifests. EDIT: a. manifests and indexes are cheap, there's very little downside to creating these |
I would also like to align on how we should call it, Docker calls it a |
@chenbh Thank you very much for this awesome feedback!!! Definitly it is a very interesting user experience the one you are proposing! I think it worth to be discuss. @husni-faiz , @jericop , @AidanDelaney any thoughts about it? I think we will end up with the same outcome for users but with a very different flow. |
A quick note from our conversation during the WG today
Open to feedback on what could be that name!! |
@jjbustamante once we have said future abstractions, do you see us removing this lower level primitive commands since many other tool support manipulating the image index/manifests like @chenbh / @dmikusa has suggested. |
If we can hide the complexity of the primitives command behind the scene with a better user experience as Daniel suggest. I think in the future we can remove those commands, but probably the code will still be necessary to implement the abstraction. That's something the community can guide us, right? if the abstraction is so good that it fills most the scenarios, maybe the primitives will not be required anymore. |
Thinking a little bit about this, right now pack creates and push OCI artifacts with 3 commands. Based on the scenario proposed by Daniel, what about this idea: Propose adding flags like
|
@jjbustamante are you still planning on moving away from |
I haven't thought of a different name honestly. I am okay with keeping it. Again, the idea is to keep working on this and open a new RFC to start discussing the idea of: pack build --platform linux/amd64,linux/arm64 --publish
pack builder create --platform linux/amd64,linux/arm64 --publish |
This looks great and fits more inline with what I would expect most people to use. Definitely a lot of things to work through. Just some of the questions that are coming to my head:
does this execute two different builds (runs through lifecycle)?
What are the intermediate images for each platform named/called? What happens if you don't put |
Hi @hone. I just created this tracking issue with my idea for keep working on this, we going into phase 2 and I will try to answer your question:
In the next RFC I will open. Regarding this other one:
Will be something to think on phase 3 |
Readable