cpln helm command lets you manage Control Plane resources using Helm charts. Define your infrastructure as Helm templates and deploy them as versioned releases with full rollback support.
When to use this
Templated deployments
Use Helm’s templating engine for complex, parameterized configurations
Environment management
Deploy the same chart with different values for dev, staging, and production
Versioned releases
Track deployment history and rollback to previous versions
Helm ecosystem
Leverage existing Helm workflows and chart repositories
Prerequisites
CLI installed
CLI installed
Install the Control Plane CLI. See Installation.
Helm installed
Helm installed
Install Helm (v3 or later).
Required permissions
Required permissions
You need policies to create the resources defined in your chart, plus
reveal permission on secrets to manage release state.Core concepts
Releases
A release is a deployed instance of a Helm chart. Each release:- Has a unique name within your organization
- Stores its state in an opaque secret
- Tracks revisions for rollback (10 by default, configurable with
--history-limit) - Tags resources with
cpln/releasefor tracking
Release name constraints
Release names must follow these rules:| Rule | Detail |
|---|---|
| Format | DNS-1123 label — lowercase alphanumeric characters and hyphens only |
| Pattern | Must match ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ |
| Max length | 53 characters |
| Uniqueness | Must be unique within the same organization |
--generate-name (or -g) to auto-generate a name in the format <chart-name>-<unix-timestamp>.
Release state
The release state tracks all resources deployed by the release, enabling:- Detection of added, modified, or removed resources
- Automatic cleanup of deleted resources on upgrade
- Rollback to any previous revision
Supported resource types
Charts must contain only Control Plane resource definitions. Standard Kubernetes manifests (objects withapiVersion or metadata fields) are not supported and will cause the operation to fail.
GVC-scoped resources
The following resource kinds require a GVC context (via--gvc or your default profile context). The GVC must already exist or be created earlier in the same chart:
workload, identity, volumeset
Quick start
Define resources
Replace the contents of
my-chart/templates/ with Control Plane resources:my-chart/templates/resources.yaml
Install a release
- Local chart
- Helm repository
- OCI registry
- Auto-generated name
Wait for readiness
Wait for workloads to become ready:Handle chart dependencies
If your chart has dependencies defined inChart.yaml, use --dependency-update to fetch them automatically:
Upgrade a release
Update a release after modifying the chart:- Renders the updated chart
- Applies new and modified resources
- Deletes resources removed from the chart (unless they have
helm.sh/resource-policy: keep) - Updates the release state
Install or upgrade
Use--install to create the release if it does not exist, or upgrade it if it does:
Manage revision history
By default, each release retains up to 10 revisions for rollback. Use--history-limit on upgrade to adjust this:
| Value | Behavior |
|---|---|
10 (default) | Keeps the 10 most recent revisions |
0 | Keeps all revisions indefinitely |
N | Keeps the N most recent revisions |
Release description
Use--description (or --desc) to attach a custom description to a release revision. It appears in cpln helm history output:
"Rollback to <version>".
Rollback a release
Revert to a previous revision:Clean up on failure
Use--cleanup-on-fail to automatically delete resources created during a failed rollback:
View release information
- List releases
- Release history
- Get manifest
- Get all
- Get values
- Get notes
helm get subcommands accept --revision <num> to view data from a specific historical revision:
Uninstall a release
Remove all resources and delete the release:- All resources tracked by the release
- The release state secret
Template preview
Preview the rendered output without deploying:Injected values
The CLI automatically injects these values into your chart, making them available in templates without requiring you to define them:| Key | Description |
|---|---|
cpln.org | Current organization name |
cpln.gvc | Current GVC name (when --gvc is provided) |
--set and --values are not carried over between operations. Each upgrade generates a fresh config from the chart defaults plus whatever you pass in that command. CI/CD pipelines must pass the full set of values on every upgrade.Tags and labels
Tagging resources
Use--tag to attach custom tags to all resources deployed by the release:
- Helm metadata tags (
cpln/release) — always applied, cannot be overridden - Template-level tags — tags defined on individual resources in your chart YAML
- Release-level tags — tags from
--tagand--state-tagflags
--tag.
Use --remove-tag on upgrade to remove tags from resources:
Tagging the release secret
Use--state-tag to attach tags to the release state secret itself (not the deployed resources):
--remove-state-tag on upgrade to remove state tags:
Tag behavior across revisions
Unlike values, tags carry over between revisions. You don’t need to re-specify--tag or --state-tag on every upgrade — previous tags are used as a base and new ones merge on top. Use --remove-tag or --remove-state-tag to explicitly drop a tag.
Secret change detection
When a chart contains both secrets and workloads that reference those secrets, the CLI automatically tags workloads with a hash of each referenced secret’s content:Protect resources from deletion
Prevent a resource from being deleted during upgrades or uninstalls:Chart notes
Createtemplates/NOTES.txt to display messages after install/upgrade:
Environment-specific values
Use different values files for each environment:Troubleshooting
Release already exists
Release already exists
Use Or use
upgrade instead of install for existing releases:upgrade --install to handle both cases:Release is stuck in pending state
Release is stuck in pending state
If a previous operation was interrupted, the release may be stuck in Run the
pending-install, pending-upgrade, or pending-rollback status. The CLI will show an error that includes the exact secret name and the command to delete it:cpln secret delete command shown in the error message to unblock the release.Non-CPLN resources in chart
Non-CPLN resources in chart
If your chart contains Kubernetes manifests (resources with Remove any standard Kubernetes resources from your templates. Charts must contain only Control Plane resource definitions.
apiVersion or metadata fields), you’ll see:Cannot upgrade with different chart name
Cannot upgrade with different chart name
When upgrading a release, the chart name must match the one used during install:If you need to switch charts, uninstall the release first, then install with the new chart.
Resources not deleted on upgrade
Resources not deleted on upgrade
Ensure you’re using the same release name. Resources are only tracked within a single release. Also check if the resources have the
helm.sh/resource-policy: keep tag, which prevents deletion.Rollback fails
Rollback fails
Check available revisions with
cpln helm history. Rollback can only target revisions with deployed or superseded status. By default, only 10 revisions are retained. See Manage revision history to adjust this limit.Missing chart dependencies
Missing chart dependencies
If your chart has dependencies in Re-run with the
Chart.yaml that haven’t been fetched:--dependency-update flag:GVC does not exist
GVC does not exist
GVC-scoped resources (workload, identity, volumeset) require the GVC to exist. Either create the GVC in a separate step before installing, or include the GVC as a resource in your chart so it’s created first.
Permission denied on install
Permission denied on install
Ensure you have
reveal permission on secrets to manage release state.Release name invalid
Release name invalid
Release names must be DNS-1123 compliant: lowercase alphanumeric and hyphens only, max 53 characters, cannot start or end with a hyphen. Use
--generate-name if you don’t want to manage names manually.