Skip to content
Browse the site

Deep Dives

AI: Claude and Codex patterns

ConfigHub: Deploy and manage

Configs
Stacks
Apps
Plugins
Guides
Docs

Before and after

The shop-web app, before and after

An app's YAML never says what the cluster must already run. ConfigHub lists what the app needs, and checks it against a platform.

Before and after

Before: the app's YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: shop-web
  namespace: shop
spec:
  replicas: 3
  selector: { matchLabels: { app: shop-web } }
  template:
    metadata: { labels: { app: shop-web } }
    spec:
      containers:
        - name: web
          image: registry.k8s.io/e2e-test-images/agnhost:2.47
          ports: [{ containerPort: 8080 }]
---
apiVersion: v1
kind: Service
metadata:
  name: shop-web
  namespace: shop
spec:
  selector: { app: shop-web }
  ports: [{ port: 80, targetPort: 8080 }]
---
apiVersion: networking.k8s.io/v1

The app's five objects, as its team wrote them.

After: in ConfigHub
ConfigHub showing the shop-web base with its dev and prod variants, and the label and five replicas prod sets

Taken in the helm-catalog organization on 2026-10-26, showing the shop-web base with its dev and prod variants, and the label and five replicas prod sets.

Each variant holds 6 Units in ConfigHub: the app's 5 objects and its namespace.

  • ConfigHub lists what the app needs from a platform: an ingress controller, cert-manager and a Prometheus operator.
  • The platform check confirms shop-platform provides all three, and warns about the one thing it cannot see, the letsencrypt ClusterIssuer.
  • Dev and prod are variants of one base, and prod's changes are listed in one place.

What you work out today, and what happens here instead

TodayHere instead
The Ingress names the nginx class, and nothing in the files says the cluster must run an ingress controller.cub app check lists an ingress controller as a need, and the platform check confirms shop-platform carries one.
The Certificate needs cert-manager, and a ClusterIssuer called letsencrypt that none of these files creates.cub app check lists cert-manager, and the platform check warns that ClusterIssuer/letsencrypt must already exist on the cluster.
The ServiceMonitor only works if the Prometheus operator's CRDs are installed.cub app check lists a Prometheus operator, and the platform check finds kube-prometheus-stack in shop-platform.
The namespace shop must already exist.Both checks name it, before anything is applied.

ConfigHub keeps configuration as plain objects, with a history of every change. A base holds what every environment shares, and a variant is one environment's copy that stays linked to its base and lists what it changes.

Load it into your ConfigHub

Sign in, then paste the rest. It saves the app as a base in your organization, and makes a dev and a prod variant of it. It touches no cluster.

$ cub auth login

$ cub app upload shop-web --run

$ cub variant create dev shop-web-base --change-desc "Clone the base as dev"

$ cub variant create prod shop-web-base --change-desc "Clone the base as prod"

$ cub function set --space shop-web-dev --change-desc "Label every object environment dev" set-label environment dev

$ cub function set --space shop-web-prod --change-desc "Label every object environment prod" set-label environment prod

$ cub function set --space shop-web-prod --unit shop-web --change-desc "Run five replicas in prod" set-replicas 5

You need a ConfigHub account and cub with the Workshop plugin.

Try it on your laptop

No account needed. The first line lists what the app needs, and the second checks it on a platform that carries those.

$ cub app check shop-web

$ cub stack sandbox shop-platform

You need cub with the Workshop plugin. Install the Workshop plugin with cub plugin install confighub/cub-workshop@v0.6.61.

Show me the details (for experienced users)