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

An Argo CD ApplicationSet, before and after

An ApplicationSet's template becomes the Applications it would make, each a variant of one base, with prod's changes listed in one place.

Before and after

Before: a template with placeholders
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: apptique
  namespace: argocd
spec:
  generators:
    - git:
        repoURL: https://github.com/confighub/examples.git
        revision: main
        directories:
          - path: gitops/argo/beginner-applicationset/apps/apptique/overlays/*
  template:
    metadata:
      name: 'apptique-{{path.basename}}'
      labels:
        app.kubernetes.io/name: apptique
        app.kubernetes.io/instance: 'apptique-{{path.basename}}'
        environment: '{{path.basename}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/confighub/examples.git
        targetRevision: main
        path: '{{path}}'
      destination:

bootstrap/applicationset.yaml, its first 26 of 34 lines. You read files like this to work out what each environment runs.

After: in ConfigHub
ConfigHub showing the base with the two variants the ApplicationSet generates, and the settings prod changes

Taken in the helm-catalog organization on 2026-10-25, showing the base with the two variants the ApplicationSet generates, and the settings prod changes.

Each variant is one Unit in ConfigHub, holding everything its Application deploys.

  • The two Applications the template would make are written out as variants of one base.
  • Prod's changes from the base are listed in one place: namespace, label, 3 replicas and its resources.
  • Nothing is generated on the cluster before you have read it.

What you work out today, and what happens here instead

TodayHere instead
An ApplicationSet makes Applications from a template on the cluster, so you never see them before they exist.The template is filled in here, one Application per environment, each a variant of one base.
The ApplicationSet was applied by hand.It stays in the cluster. The plan says handover must patch it or repoint its Applications one by one.

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 fetches the example, works out what each environment runs, and saves it in your organization. It touches no cluster, and Argo CD keeps syncing Git until you run handover.sh, the step that moves each Application onto ConfigHub's releases.

$ cub auth login

$ git clone https://github.com/confighub/examples.git && git -C examples checkout 7f1b8f2fc849bb6488bc2c58f1469172018fc9dd

$ cd examples/gitops/argo/beginner-applicationset

$ cub argo apply . --prefix appset --out onboard

$ bash onboard/apply.sh

You need a ConfigHub account and cub with the argo plugin and kustomize.

Try it on your laptop

No account needed. This fetches the example and shows what each environment runs. In your own Argo CD repository, run the last line from its root.

$ git clone https://github.com/confighub/examples.git && git -C examples checkout 7f1b8f2fc849bb6488bc2c58f1469172018fc9dd

$ cd examples/gitops/argo/beginner-applicationset

$ cub argo plan .

You need cub with the argo plugin and kustomize.

Show me the details (for experienced users)