Skip to content
In this Guide

In this Guide

Deep Dives

AI: Claude and Codex patterns

ConfigHub: Deploy and manage

More in this Guide

The configuration processing model

This page explains how the Catalog treats configuration. The detail page has the full definitions of each step in the model. You can also view this as a markdown file.

The model in one line

Flatten it. Put it in an OCI bundle, with a plan if it needs one. Load it into ConfigHub.

StepWhat happensTool
1. FlattenA source is turned into plain Kubernetes objects.Helm for a chart. cub installer for an installer package. aicr for an AICR recipe.
2. BundleThe objects go into one OCI bundle. If they need steps that objects cannot carry, the plan goes in with them.The Catalog publishes the bundle.
3. LoadThe bundle is loaded into ConfigHub. It becomes a base, and you make a variant of it for each environment.cub variant upload

Then you deploy a variant to a cluster.

Step 1. Flatten

A source is what a provider publishes, such as a Helm chart, an installer package or an NVIDIA AICR recipe. A recipe pins one choice from it: the source, its version and one set of values.

Flattening runs the source's own tool once and keeps the objects it produces. Nothing runs that tool again when you install.

SourceFlattened by
Helm chartHelm
Installer packagecub installer
AICR recipeaicr
Plain YAMLNothing. It is already objects.

Step 2. Put it in an OCI bundle, with a plan if it needs one

An OCI bundle is one artifact in a registry. It holds the flattened objects.

Not all source configuration can be completely flattened. The configuration steps taken after flattening are called the plan. Examples are "apply the CRDs first" and "this Secret must exist". A bundle carries its plan. A bundle that needs no such step has no plan.

You can pull, read, compare and install an OCI bundle with no account.

Step 3. Load it into ConfigHub

New to cub? Install the cub CLI first. Public catalog packages pull and render anonymously, and you sign in only once a command saves or changes ConfigHub data.

cub variant upload --component gpu-operator --variant base --namespace gpu-operator "$BUNDLE"

The bundle becomes a base, with one Unit for each object. A variant is a copy of the base with your changes for one environment. When a new bundle arrives, you load it over the base and promote the change to each variant.

You want toDo this
Turn a component on or offFlatten again with new values. It gives a new bundle, and a new base.
Set replicas or limits for one environmentMake a variant of the base.
Make production differ from stagingMake a variant of the base for each.

The same model for every format

Helmcub installerAICRPlain YAML
1. FlattenHelmcub installeraicrNothing to do
2. OCI bundleObjects, and a plan if neededObjects, and a plan if neededArgo CD Applications, and a planObjects
3. Load into ConfigHubA base, then variantsA base, then variantsA base, then variantsA base, then variants

What the flattening verdict means

Every entry records a flattening verdict. It answers one question: can this source be flattened once and delivered as plain objects?

VerdictWhat it meansWhat you do
safe-to-flattenThe objects are everything. No step is needed around them.Load the bundle and deliver it.
flatten-with-routesThe source is flattened, and some steps must still happen when you deliver. Those steps are the plan. "Routes" is the stored name for the plan's steps.Load the bundle, and carry out the plan when you deliver.
unsafe-to-flattenThe objects alone are not enough. The source depends on a live lookup, generated state or a destructive lifecycle step that no plan step covers yet.Use the installer package with cub installer. No bundle is published.
born-flattenedThe source is already plain objects.Load it and deliver it.

Three questions people ask about flatten-with-routes.

Is it completely flattened? For a Helm chart, yes. Helm has run, and nothing renders again when you install. Most plan steps are work around the objects, such as "apply the CRDs first", "this Secret must exist" or a hook Job. A few name a value that only your destination knows, such as a cluster name or a region. The objects hold the placeholder confighubplaceholder where that value goes, and the entry page lists it as an input the destination must supply. You replace the placeholder for each destination before you deliver. For an AICR recipe the bundle holds Argo CD Applications, and Argo CD still renders the charts inside them when it deploys.

Can I load it into ConfigHub? Yes. cub variant upload loads the bundle as a base, and you make variants of it as you do for any other entry. The plan travels inside the bundle.

What do I do with the plan? Read it on the entry page, which lists each step, who carries it out and whether the Catalog has run it. You, or your pipeline, carry out the steps when you deliver. Where an entry page has a test script, the script stops and names any step it cannot do for you.

Try it

Deploy the GPU Operator from the Catalog does all three steps, and then deploys and tests the result.

PageWhat it adds
The model, in detailThe full definition of each step.
Deploy the GPU Operator from the CatalogThe model on one Helm chart, in five steps.
One AICR v1.0.0 recipeThe model on one NVIDIA AICR recipe.
What we refuse to claimThe limits of what the Catalog says.

Words

WordMeaning
SourceWhat a provider publishes.
RecipeOne pinned choice from a source: its version and one set of values.
OCI bundleThe flattened objects of one recipe, in one OCI artifact, with a plan if they need one.
PlanThe steps that objects cannot carry.
BaseAn OCI bundle loaded into ConfigHub.
VariantA copy of a base with your changes for one environment.
Installer packageOne OCI artifact that holds every preset of a chart version. cub installer flattens one preset into files.

Technical notes and disclaimers

  • UNOFFICIAL/EXPERIMENTAL.
  • The reference page holds the detail.
  • Not every entry has a published OCI bundle yet. Each entry page says whether its bundle is published.
  • For an AICR recipe, Argo CD still renders the charts inside the Applications when it deploys them.