-
Notifications
You must be signed in to change notification settings - Fork 99
Description
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.jsonas 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.