-
Notifications
You must be signed in to change notification settings - Fork 178
DRAFT: Image Stream for better UX #3519
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
base: main
Are you sure you want to change the base?
Conversation
| "maxRetries": 3, | ||
| "retryDelay": "5m", | ||
| "tlsVerify": true, | ||
| "streamCache": { |
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.
We already download blobs to a temporary dir, so no need to create a new one.
We likely just need "onDemandStreaming": enable/disable and which should depend on onDemand:true
|
@mariusbertram thanks for taking this on. This has been a long time ask. |
andaaron
left a comment
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 @mariusbertram, thank you for the initiative.
The sync feature is designed to be an "extension". It is an optional feature, built using the "sync" go build tag, and the package is located under https://github.com/project-zot/zot/tree/main/pkg/extensions/sync.
This PR doesn't seem to integrate with it, except for the configuration file.
"sync" uses regctl as a library to copy the files locally to a temporary folder. After the entire download is done, it moves the files to storage. After that is done, it starts serving them to the user.
The implementation goal of #1395 is to refactor "sync" and make the content available to the client as it becomes available.
We don't want to duplicate logic found in regctl, we tried that before, and the maintenance overhead was too large. If regctl library changes are needed, that can also be discussed.
|
Is this more of an update to serve content from storage concurrently for #2589? |
The idear is to implement something like a proxy cache for the pull through. With that zot downloads the blobs to the cache dir and can after download serve this blob to the requested client. I will try to implement this approach with regctl. Because of the different approach I did Create this PR in this early stage to get your feedback. |
|
I did some testing. The major problem is the initial pull of the image by zot is extremely slow. A direct pull takes about 6s with ociregistry (a very simple Pull-through oct registry ) 42s and a current zot build with local storage 2min 32s I have not found the blocking part. But I think if this problem is solved and for my environment (Internet 100mbit/s down) with an image of this size in sub 1min should be a first step to the streaming. BTW Redhat’s Quay has a similar approach as zot https://docs.redhat.com/en/documentation/red_hat_quay/3.7/html/use_red_hat_quay/quay-as-cache-proxy |
|
I would like to see this feature in zot - as we are experiencing same performance issues with zot. |
What type of PR is this?
feature
Which issue does this PR fix:
#1395
What does this PR do / Why do we need it:
This PR implements a better UX for on-demand Image Pulls.
This PR is in a working PoC status.
If an issue # is not available please add repro steps and logs showing the issue:
Testing done on this change:
Automation added to e2e:
Will this break upgrades or downgrades?
Does this PR introduce any user-facing change?:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.