Overview
With the operator installed, you can:- Define resources as YAML - Create GVCs, workloads, secrets, and other resources as Kubernetes manifests
- Enable GitOps - Store your infrastructure in Git and deploy automatically with ArgoCD
- Maintain consistency - Keep your Kubernetes and Control Plane resources in sync
Supported resources
The operator manages the following Control Plane resource types from Kubernetes. Most resources use Control Plane CRDs; secrets use the native Kubernetes Secret format described below.| Resource | Description |
|---|---|
agent | Secure connectivity to private networks |
auditctx | Tamper-proof audit trail for tracking actions |
cloudaccount | Cloud provider integrations (AWS, GCP, Azure, NGS) |
domain | Custom domain mapping with TLS and geo-routing |
group | Membership collection of users and service accounts |
gvc | GVC that groups workloads and defines deployment locations |
identity | Grants workloads access to cloud resources and private networks |
ipset | Reserved public IP addresses for workloads |
location | Cloud regions where workloads can be deployed |
mk8s | Managed Kubernetes clusters across cloud providers |
org | Top-level context for all Control Plane resources |
policy | Grants permissions to principals on target resources |
secret | Encrypted storage for credentials and sensitive data |
serviceaccount | Machine identity for headless API operations |
volumeset | Persistent storage with snapshots and autoscaling |
workload | Application containers running on Control Plane |
Key concepts
Custom resource structure
Custom resource structure
Control Plane custom resources differ from standard Kubernetes resources. Fields like Always use the export feature to generate accurate manifests.
org, gvc, and description are at the top level, not inside spec:Secrets handling
Secrets handling
Secrets use native Kubernetes Secret objects with a special label and org annotation:The
app.kubernetes.io/managed-by: cpln-operator label is required for the operator to manage the secret. The cpln.io/org annotation tells the operator which Control Plane org to sync the secret to.Deletion protection
Deletion protection
Deleting a Kubernetes resource while the operator is running removes the corresponding resource from Control Plane. To prevent this, add the Resources with this annotation remain in Control Plane even when deleted from Kubernetes.
cpln.io/resource-policy: keep annotation:Get started
Ready to set up the operator? Follow our step-by-step installation guide:Install the Kubernetes Operator
Complete guide covering cert-manager installation, Helm deployment, authentication setup, and deploying your first resources
Exporting resources as Kubernetes manifests
You don’t have to write manifests from scratch. Control Plane provides built-in tools to export resources in Kubernetes manifest format.- Console UI
- CLI
Export existing resources:Select any resource and click the Export dropdown in the upper right corner, then choose K8s CRD to download the manifest.Preview before creating:When creating a new resource, configure it using the UI, then click Preview and select K8s CRD. This generates the manifest without deploying the resource, which is useful for storing in Git and deploying via ArgoCD.
Deploying resources
Once you have Kubernetes manifests, apply them to your cluster using kubectl:- One namespace per GVC for GVC-scoped resources (workloads, identities, volumesets)
- One namespace per org for org-scoped resources (GVCs, secrets, policies)
Additional resources
GitHub Repository
Source code, CRD schemas, and issue tracking
cpln apply
Alternative: Deploy resources from YAML using the CLI