Support OCI Image Layers Deltas in Image-Serve Local Registry

Registered by Bogdan Dobrelya on 2020-06-26

The local registry that TripleO provides for installation on underclouds is here to stay for at least the life time of the long-time releases of downstream products based on TripleO Queens and Train-Victoria, which is - years.

There is EDGE DCN architecture to be supported for that long period of time as well. For DCN, transferring images over the high-latency WAN during installation, scale-up, minor updates and major upgrades is time consuming and expensive. Especially when a security update or a minor version change for a package in the base layer, which invalidates all layers of all images, should be pushed from the central location to the EDGE, or synchronized there by using other image distribution approaches.

Supporting image layers deltas for OCI images is here to help. This feature requires support on both sides - the client that pulls images (podman pull CLI) and the image registry from which the clients pull images. Ensuring the latter for the supported ways of images distribution for overcloud nodes, like Quay, or Satellite, may be something hard to achieve and quite long to wait for.

Image-serve may be the most simple target for that improvement. It fetches image layers from the supported sources, like remote image registries, and then there is a (non-production use yet) option for overcloud nodes to use those images. In that scenario, image-serve, being normally placed on the undercloud, becomes a "proxy" registry.

The proposal is to make image-serve storing the fetched layers providing deltas, using the bsdiff, tar-patch tooling and zstd compression format in the similar way how it is implemented in tar-diff [0] Go library. Then there would be no changes required to the remote sources of images, but only to image-serve "proxy" and its clients (podman pull CLI).

That should drastically improve the users experience with Day-2 operations for EDGE and large scale environments.

[0] https://github.com/containers/tar-diff

Blueprint information

Status:
Not started
Approver:
Alex Schultz
Priority:
Undefined
Drafter:
Bogdan Dobrelya
Direction:
Needs approval
Assignee:
Bogdan Dobrelya
Definition:
Drafting
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.opendev.org/#/q/topic:bp/image-serve-deltas

Addressed by: https://review.opendev.org/738174
    Add support for OCI layers deltas in Image-Serve

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.