Skip to content
This repository was archived by the owner on Mar 3, 2025. It is now read-only.
This repository was archived by the owner on Mar 3, 2025. It is now read-only.

Replace pod-based image unpacker with an image registry client #143

@joelanford

Description

@joelanford

There are several issues related to our use of a pod to unpack images:

I propose that we switch to an image registry client used directly by the controller. I think for the initial implementation we can:

  1. Always resolve tags to SHAs by communicating with image registry
  2. Pull content for tag into an emptyDir volume
    i. If the content for a SHA is cached locally, no need to pull again
  3. Unpack content into served filesystem
    i. If the desired SHA is already being served, no need to unpack again

Future optimizations could include:

  1. Running full resolve/unpack process in a goroutine, and using a channel to communicate events back to the reconciler to requeue
  2. Rate-limit requests to an image registry (but if a request is rate-limited always put another request in the queue to make sure we don't rest on a stale tag resolution.
  3. Explore cache optimizations (e.g. persistent volume, garbage collection based on LRU + max inactive size)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions