Skip to content

InvocationImage support of relocations/thick bundle #162

@GreenCee

Description

@GreenCee

In stepping through thin/thick bundle workflows we've identified a path forward that preserves the requirement of airgap 'thick bundle' installs without requiring entirely separate codepaths. The result is that the runtime and the invocationImages can be created in such a way they can be naïve of where the bundle is being installed as well as adding the ability for 'manual' relocation for non-supported images (Obscure VM types, purposely for separation of duties between pushing an image and pulling an image).

A lot of this ties back to Duffle's initial concept of rewrite

Relocation as a concept is the act of renaming and/or moving an image while preserving the relevant digests and relationships. In the most common case this will be OCI moves between registries. Another way would be registering a VM or Function at a different location (AKA my AWS account's AMI gallery)

Taking a simple example of a CNAB that installed a helm chart, the invocationImage would be required to pattern match and update references to these called out images within the helm chart.
For the Spec we should remain agnostic on the how, whether a find/replace, or just using the updated "image:" value if it just tacks on that value to a command internally. Everything will have a slightly different way of accomplishing this, but beleive tooling will emerge to take an aribitrary Helm chart or Docker Componse file and pull out image references that will be relocated and the rewrite logic.
@jeremyrickard @carolynvs - I'm curious if this would provide the right things needed for Porter to 'thick enable' an aribitrary Helm Chart, or Kubernetes Deployment. For example the burden of logic would be one-time at the mix-in level

This should result in a Spec PR that requires an invocationImage(or bundle?) to declare it supports relocation aka Thick Bundle

Assumptions to poke holes in logic

  • InvocationImages will have access to the bundle.json (Mount entire bundle.json as a file at /var/run/cnab/bundle.json #144)
  • The bundle.json will contain the replaced or relocated either embedded in parameters or a similar node (IssueTBD) with 'originalImage' and 'image' available
  • Runtimes should be able to optionally support thick bundles. Should we echo this in the bundle/InvocationImage requirements to be compliant?
  • The outcome of relocation (Image relocation duffle#671) will influence this as well.

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