Skip to content
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

Improvements to internal image unpacking abstractions #1345

Open
joelanford opened this issue Oct 4, 2024 · 0 comments
Open

Improvements to internal image unpacking abstractions #1345

joelanford opened this issue Oct 4, 2024 · 0 comments
Labels
kind/design Categorizes issue or PR as related to design. v1.x Issues related to OLMv1 features that come after 1.0

Comments

@joelanford
Copy link
Member

For now, I'm opening this issue to collect ideas for ways to improve our image unpacking, caching, and storage abstractions, for both catalogd and operator-controller.

The ideas I can think of now are:

  1. Async image pulling and unpacking. If an image needs to be unpacked, spawn a separate goroutine to do it and signal the reconciler when the unpack completes (or fails).
  2. Combine the catalogd and operator-controller implementations. They are similar but not binary compatible. We likely need a more generic "request" type that can be used for both ClusterCatalogs and ClusterExtensions.
  3. We need a way to ask: "what is the current state of $id" in a way that we can always reconstruct status. Of note for catalogd is the extra wrinkle for images of wanting to skip all registry interactions, even for tag-based references, based on a configured poll interval. We can only skip unpacking if we know that we are actually already serving the expected content, and we may need to update status even if we aren't unpacking.
  4. Could we simplify or remove catalogd's storage implementation by giving more responsibility to the Unpacker, where someone using the Unpacker can provide a function that manifests an image onto the filesystem in whatever way they want. For example:
    • Catalogd could walk the FBC root within the image filesystem and directly write all.json as part of the unpack process, thereby eliminating the extra unpack cache, disk I/O, etc.
    • Operator-controller could extract just the bundle specific directories from the image, and ignore extraneous data.
    • Both implementations could include validation and potentially short-circuit if image contents are not as expected.
  5. Is there a way to make a better abstraction for the potential future where we have different source types? Right now, it feels like assumptions about image registries are creeping in.
@joelanford joelanford added the kind/design Categorizes issue or PR as related to design. label Oct 4, 2024
@LalatenduMohanty LalatenduMohanty added the v1.x Issues related to OLMv1 features that come after 1.0 label Oct 7, 2024
@joelanford joelanford added this to OLM v1 Oct 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/design Categorizes issue or PR as related to design. v1.x Issues related to OLMv1 features that come after 1.0
Projects
Status: No status
Development

No branches or pull requests

2 participants