Every Catalog entry page carries these five steps in this order. Each step says what the Catalog has run for this entry, and a step with a missing precondition gives no command.
What is fixed, and what you supply
Fixed when this entry was built. These went into the build, so the objects already carry them. To change one, build the entry again from its source.
chart is nvidia/gpu-operatorversion is v26.7.1base is defaultvaluesProfile is recipes/nvidia/gpu-operator/v26.7.1/effective-values.yamlnamespace is gpu-operatorreleaseName is gpu-operatorcapabilityProfile is {"apiVersions":[],"kubeVersion":"1.31.0"}
Yours to supply or check. The destination must have these before the objects are applied. The words in italics say what the Catalog knows about each.
- gpu-operator CRD included in this base; it must be established before Kubernetes accepts the rendered ClusterPolicy object Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
- CRD included in this base and applied before the workloads that use it Declared. Not checked on any destination.
This entry's plan, and how to test it
These are the steps that plain objects cannot carry. ConfigHub stores them and does not carry them out. The words in italics say what the Catalog knows about each.
- When you deliver. Apply the 8 CustomResourceDefinition objects first. Wait until every named definition reports the Established condition. The listing gives the rest. Who: whatever applies the objects. Written down. Not run by the Catalog.
- Around an upgrade. Before an upgrade, move the CRDs to the new version. Helm does not upgrade CRDs from a chart's crds directory, so the chart ships this Job. The listing gives the rest. Who: delivery workflow. Written down. Not run by the Catalog.
- Around a delete. Before deleting, remove a chart-managed GPUCluster and wait for it to go. The Job deletes the chart-managed GPUCluster object and waits until it is gone, so the operator can drain workloads under its finalizer while it is still running. The listing gives the rest. Who: delivery workflow. Written down. Not run by the Catalog.
- Around a delete. After deleting, prune node-feature-discovery labels from the nodes. The Job runs nfd-master -prune, which removes node-feature-discovery labels, annotations and taints from every node, with its own ServiceAccount, ClusterRole and ClusterRoleBinding. The listing gives the rest. Who: delivery workflow. Written down. Not run by the Catalog.
Test the install steps yourself. This script carries them out with kubectl on a cluster you choose, with no account. Read it first and use a throwaway cluster. The Catalog ran it on a local cluster, and the log has every line.
Test the plain objects. A second script tests the retained objects themselves with kubectl, and it needs no cub and no account. The Catalog has no recorded run of this script.
Upgrade and delete. The Catalog carried out this entry's upgrade and delete steps by hand on a local cluster, and the log has every line.
Read what a plan is, and why some entries have one.
1. Get the exact objects Run for this entry
The Catalog rendered this entry and retains its 27 objects in one file.
An upload can create more Units than the objects counted here. The installer renders a Namespace, and the upload adds an installer-record Unit.
Here is what the command does. cub installer is an open-source plugin for the cub CLI. cub installer setup pulls a catalog package and writes its Kubernetes files locally, leaving delivery to kubectl, Argo CD or Flux. The generated scripts stop before doing any work when the plugin or kustomize is missing.
$ curl -fsSL -o nvidia-gpu-operator-v26-7-1-default.yaml https://raw.githubusercontent.com/confighub/helm-expt/main/recipes/nvidia/gpu-operator/v26.7.1/revisions/default/r001/rendered/release-objects.yaml
$ shasum -a 256 nvidia-gpu-operator-v26-7-1-default.yaml
a3d4cab291e48e0d0e667ef49116c6d7ecff91600cd13c1e9c4c23290fcd78dd nvidia-gpu-operator-v26-7-1-default.yaml
$ cub installer setup --pull oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/nvidia-gpu-operator:v26.7.1@sha256:03fa8aec9221b64cc5c25f3334775338a9f98c0529bad66f12340d124c238b71 --base default --work-dir ./nvidia-gpu-operator-v26-7-1-default --non-interactive --namespace gpu-operator
2. Compare with another version or base Not run for this entry
The listing records no comparison for this entry. The commands run on the retained files, with no account. This version has 6 other bases in the Catalog, aicr-eks-training, driver-580.105.08, driver-580.126.20, external-nfd, preinstalled-driver and preinstalled-driver-and-toolkit. The Catalog holds 3 other versions, v25.10.1, v26.3.2 and v26.3.3.
$ curl -fsSL -o nvidia-gpu-operator-v26-7-1-aicr-eks-training.yaml https://raw.githubusercontent.com/confighub/helm-expt/main/recipes/nvidia/gpu-operator/v26.7.1/revisions/aicr-eks-training/r001/rendered/release-objects.yaml
$ cub config diff nvidia-gpu-operator-v26-7-1-default.yaml nvidia-gpu-operator-v26-7-1-aicr-eks-training.yaml --summary
$ curl -fsSL -o nvidia-gpu-operator-v26-3-3-default.yaml https://raw.githubusercontent.com/confighub/helm-expt/main/recipes/nvidia/gpu-operator/v26.3.3/revisions/default/r001/rendered/release-objects.yaml
$ cub config diff nvidia-gpu-operator-v26-3-3-default.yaml nvidia-gpu-operator-v26-7-1-default.yaml --summary
3. Upload it as a variant Not run for this entry
The Catalog has not uploaded this entry. The commands use its signed installer package. Read the log of the live walk on 2026-10-08.
Replace each value in angle brackets with a name of your own. The entry id may already exist as a Space in your organization, and the package name as a Component.
In the live walk, a Space named for the nginx entry's id and a Component named bitnami-nginx already existed, so the walk chose its own names. The --component flag sets the Component label the upload writes on the Space, which is the package name when you omit it.
The cub installer plugin reads your organization from CUB_CONTEXT and ignores --context. If you use a context other than your default, export CUB_CONTEXT first, or the plugin works in your default organization.
$ cub auth login
$ cub installer upload --work-dir ./nvidia-gpu-operator-v26-7-1-default --space <your-space> --component <your-component>
$ cub unit list --space <your-space>
4. Deploy it Not run for this entry
No delivery run is recorded for this entry. Argo CD has not run, Flux has not run, and kubectl has not run. The commands name the Target workshop/target, which cub cluster up --name workshop creates on a local kind cluster with Argo CD. Use your own Target for a real destination. The base carries 8 CRDs it needs, so the destination does not supply them. Read the log of the live walk on 2026-10-08.
Use the Space name you chose in step 3. The delete command is needed because the cloned installer-record Unit carries the Target and Argo CD v3.5.4 cannot read it, a defect seen on cub v0.8.7 and server v0.8.9.
Without that line the walk deployed nothing and Argo CD showed Unknown, while every cub command exited 0. The walk ran the four commands in this order and did not try them without the first publish.
ConfigHub shows nothing when Argo CD fails to read a Release. Run kubectl -n argocd get applications.argoproj.io and read the Sync column, because Healthy alone is not a pass. Argo CD took between 18 seconds and about 5 minutes to read a Release on a cluster made without argobot.
The walk made its cluster with cub cluster up --no-argobot. That command creates two Spaces, a Worker, a Target and a Trigger, opens ports 30010 to 30019 on the machine, and installs Argo CD from an unpinned upstream manifest.
Removing the ConfigHub side does not remove the workload. In the walk, deleting the Application Unit and the Spaces left the Application and its pods running, because the root Application does not prune.
$ cub variant create dev <your-space> --target workshop/target --space-pattern "template:<your-space>-dev"
$ cub release publish <your-space>-dev
$ cub unit delete --space <your-space>-dev installer-record
$ cub release publish <your-space>-dev
5. Promote a change Not run for this entry
No promotion is recorded for this entry. Promotion carries a change in the base to the dev variant. The base changes when you edit a Unit or upload a newer version into the same Space. Read the log of the live walk on 2026-10-08.
The promotion changes the dev Space and publishes nothing. It also adds the installer-record Unit back with the Target. The change reaches the cluster only after the delete and the publish.
The preview lists the whole installer record as added. In the walk, the preview of a one-label change to gpu-operator ran to 405 lines, and about 400 of them were that record.
$ cub variant promote <your-space>-dev --dry-run -o mutations
$ cub variant promote <your-space>-dev --change-desc "Pull the reviewed base forward"
$ cub unit delete --space <your-space>-dev installer-record
$ cub release publish <your-space>-dev