The same commands run from a free check to a governed release
Whatever a configuration started as, it takes the same steps. The first steps are free and need no account. The next need a ConfigHub account. The last is the commercial product.
| Tier | Verb | What it does | Command or surface |
|---|---|---|---|
| Free | check | Inspect it: what it installs, whether it is right. No cluster. | the Check |
| Free | deploy (a planned name, not yet a command) | Run the reviewed OCI on the Argo CD or Flux you already run. | cub installer, or your own kubectl, Flux, or Argo CD |
| Account | upload | Bring it into ConfigHub as a base. Public config chains into your private org here. | cub variant upload |
| Account | release | Publish an approved, immutable release with history, so the cluster pulls that instead of a hand-pushed bundle. | cub release publish |
| Account | promote | Move a reviewed change from development to production. | cub variant promote |
| Paid | govern | Run a stack under governance: approvals, releases, rollback, drift, a fleet view. | the commercial product |
A stack adds free commands of its own, certify and sandbox, and a fleet places one across many clusters. Those run today as a plugin prototype. See stacks and fleets.
Every source becomes exact Kubernetes objects and any required setup before it reaches this page. See what each format becomes, and see what happens to hooks, CRDs, and setup work.
Try it now
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.
# one image into your org
$ cub variant upload --component redis --variant base oci://…@sha256:…
# release by digest; your reconciler pulls it
$ cub release publish redis-app
# move the reviewed change up the tree
$ cub variant promote redis-staging
These are ConfigHub's own verbs, and each has its own section below. Start from a stack instead for the plugin's own commands.
1. Release
Release publishes an approved configuration by digest, so your reconciler pulls exactly that image instead of a hand-pushed bundle.
| Level | Do this | Command | What you get |
|---|---|---|---|
| Advanced | Attach a cluster that pulls | cub cluster up demo-dev | A kind cluster with Argo CD, wired to an OCI target in ConfigHub, so releases published to it reconcile. |
| Basic | Upload one image, or one app, as a base | cub variant upload --component redis --variant base oci://…@sha256:…cub app upload shop-web --run | A base variant you can clone. Nothing is deployed yet. |
| Basic | Place it on a cluster | cub variant create demo-dev metrics-server-base --target demo-dev/target --space-pattern "template:metrics-server-demo-dev" | A deployment variant, cloned from the base into a Space named metrics-server-demo-dev, bound to that cluster's OCI target. |
| Basic | Release it | cub release publish metrics-server-demo-dev | An OCI image in ConfigHub's registry, pinned to its digest, for your reconciler to pull. |
Once released, ConfigHub's record of the approved target stays put, and Argo CD or Flux applies the release and reports the live result.
2. Promote
Promote carries a reviewed change from one environment to the next. Variants decides whether the change belongs in the base or in one derived variant, and what protection means.
| Level | Do this | Command | What you get |
|---|---|---|---|
| Basic | Change one field in a base | cub function set --space cart-base --unit retail-deployment-cart set-replicas 2 --change-desc "Two cart replicas" | A new revision of the base. Every deployment cloned from it now shows as behind. |
| Advanced | Promote the change | cub variant promote cart-demo-dev --dry-run, then without --dry-run | The deployment takes the base's change and keeps what it protected; anything withheld appears in cub unit conflicts. |
A dry run shows exactly what would change before anything is applied.
3. Gate and approve
Checks inspect a candidate, and apply gates decide whether ConfigHub may apply it. A warning is recorded without stopping delivery, but a blocking gate stops the apply. Production approval is a separate gate from schema and placeholder checks.
| Level | Do this | Command | What you get |
|---|---|---|---|
| Advanced | Gate a release on approval | cub trigger create require-approval Mutation Kubernetes/YAML vet-approvedby 1 --space cart-demo-dev | Every Unit in the Space carries an Apply Gate, and a release is refused until it clears. |
| Advanced | Approve it | cub unit approve retail-deployment-cart --space cart-demo-dev | The gate clears for exactly that revision. The next change is gated again with nobody re-arming anything. |
4. Roll back
Roll back moves a Unit's head to a revision that already ran, so publishing again releases exactly those bytes.
| Level | Do this | Command | What you get |
|---|---|---|---|
| Advanced | Roll back | cub unit update --space cart-demo-dev retail-deployment-cart --restore 2 | The Unit's head moves to the recorded revision; publish again to release it. |
Rehearse a rollback before you need it, or follow the Redis rollback example.