Description
We have encountered some use cases where we would like to associate multiple related artifacts but which would still benefit from having their own namespace location.
- Use case: A single Tekton task runs
ko
to produce multiple container images. While each of these image indexes can be pushed independently, we want to also associate them as being produced together by the single task. If we configure theko
build to push toquay.io/<username>/myrepo/ko-build/<image-name>
, the task could return a single resultquay.io/<username>/myrepo/ko-build
which would map to all image indexes. (side note: chains should also support recursive index images). - Use case: We want to produce an immutable RPM repo which itself has immutable references to contained RPMs. To achieve this, we might push the repo to
quay.io/<username>/myrpmrepo
and the contained RPMs toquay.io/<username>/myrpmrepo/<rpm>
image manifests.
Since an image index only has a reference to the digest for the referenced image index/manifest, it is not possible to map to reference any nested artifacts. Any client that is interested in supporting this functionality would need to add some form of client-specific encoding (i.e. via annotations) on the image index.
While some might be interested in having an image index refer to arbitrary pullspecs, I think that it is better to scope the references only to nested relationships as it is likely easier for registries to implement authorization models for these relationships. Being able to have a common authorization for all referenced artifacts would result in a better user experience.