CRD reference¶
The operator defines the custom resources below in the API groups core.camunda.io/v1, plugins.camunda.io/v1alpha1, and fleet.camunda.io/v1alpha1.
Each page opens with what the kind is and a minimal manifest. Then it covers one topic per section. It ends with the status conditions, the validation rules, and examples.
The API reference lists every type and field of these API groups on one page, with its default and its validation. Each kind page links its entry there. The page is generated from the API types, so it matches the CRDs of the same release.
Some kinds need an operator that this operator does not install. ElasticsearchCluster needs the ECK operator. DatabaseServer needs the CloudNativePG operator, and spec.archive also needs the Barman Cloud plugin and cert-manager. CamundaManagementCluster with spec.identityProvider.keycloak needs the Keycloak Operator. Install what you use before the manager starts, or restart the manager after. See Installation.
Cluster¶
| Kind | Scope | What it is |
|---|---|---|
| CamundaCluster | Namespaced | One orchestration cluster: Zeebe, gateway, web applications, connectors. |
| CamundaPlatformConfig | Cluster | Settings shared by all clusters: authentication, license, image repositories. |
| CamundaClusterPreset | Cluster | A baseline spec that clusters inherit. It has no status. Other kinds read it. |
| CamundaRelease | Cluster | One set of versions that a platform runs: Camunda, connectors, Elasticsearch, and PostgreSQL. It can pin images and add the environment that a version needs. It has no status. Other kinds read it. |
Storage backends¶
| Kind | Scope | What it is |
|---|---|---|
| ElasticsearchCluster | Namespaced | An Elasticsearch cluster run by ECK, published as a SecondaryStorageConfig. |
| ElasticsearchClusterPreset | Cluster | A baseline spec that Elasticsearch clusters inherit. It has no status. Other kinds read it. |
| DatabaseServer | Namespaced | A PostgreSQL server run by CloudNativePG, published as a DatabaseServerConfig. It can archive to a bucket. |
| DatabaseServerPreset | Cluster | A baseline spec that database servers inherit. It has no status. Other kinds read it. |
| Database | Namespaced | A logical database and its users on an existing PostgreSQL server, published as a DatabaseConfig. |
Contracts¶
A contract is a resource that carries connection details and credential references from the resource that provides a backend to the resources that use it. The operator validates it and reports Ready. It provisions nothing from it. You can write a contract by hand or let a resource above write it.
| Kind | Scope | What it carries |
|---|---|---|
| SecondaryStorageConfig | Namespaced | The secondary storage of a cluster: Elasticsearch or a relational database. |
| ObjectStorageConfig | Namespaced | One bucket on S3, GCS, or Azure Blob, and how to authenticate. |
| DatabaseServerConfig | Namespaced | A database server, its admin credentials, and its point-in-time-recovery capability. |
| DatabaseConfig | Namespaced | One logical database and its credentials. |
| ManagementAuthConfig | Cluster | The OIDC configuration of Management Identity. A CamundaManagementCluster writes it, and CamundaOptimize reads it. |
Management¶
| Kind | Scope | What it is |
|---|---|---|
| CamundaManagementCluster | Namespaced | The management plane: Management Identity, its identity provider, Console, and Web Modeler. |
Analytics¶
| Kind | Scope | What it is |
|---|---|---|
| CamundaOptimize | Namespaced | Camunda Optimize for one cluster: the webapp, the importer, and the exporter settings they need. |
Backup¶
| Kind | Scope | What it is |
|---|---|---|
| LogicalBackupElasticsearch | Namespaced | One backup of a cluster on Elasticsearch. |
| LogicalBackupRDBMS | Namespaced | One backup of a cluster on a relational database. |
| BackupSchedule | Namespaced | Create logical backups of a cluster on a cron schedule and prune the ones it created. |
Restore¶
| Kind | Scope | What it is |
|---|---|---|
| LogicalRestoreElasticsearch | Namespaced | Restore one Elasticsearch backup into one suspended cluster. |
| LogicalRestoreRDBMS | Namespaced | Restore one relational logical backup into a suspended cluster. |
| PointInTimeRestore | Namespaced | Align the Zeebe primary storage of a PostgreSQL cluster with a database restored to a timestamp. |
Plugins¶
These kinds are an alpha API in the group plugins.camunda.io/v1alpha1. Their fields can change in a later release.
| Kind | Scope | What it is |
|---|---|---|
| PluginSection | Cluster | One section of the create flow in the fleet manager, for example "Backup storage". The operator writes the core sections. |
| PluginRegistration | Cluster | One option that a plugin offers in one or more sections, with the permissions that the option asks for. The operator writes the built-in options. |
| PluginRequest | Namespaced | A request to a plugin for the resources of one section. |
| Grant | Namespaced | One permission that a plugin asks for, on behalf of a PluginRequest. |
Fleet¶
The kinds below are an alpha API in the group fleet.camunda.io/v1alpha1. Their fields can change in a later release.
| Kind | Scope | What it is |
|---|---|---|
| Environment | Cluster | The policy for the claims in the namespaces whose label fleet.camunda.io/environment names it. |
| CamundaClusterClaim | Namespaced | A request for one Camunda cluster under the policy of the environment of its namespace. The operator creates the cluster and a PluginRequest for each option. |
| CamundaManagementClusterClaim | Namespaced | A request for one management plane that serves the clusters of one or more environments. The operator creates the CamundaManagementCluster and a PluginRequest for each option. |
How the kinds relate¶
Each diagram below shows one concern: which kind needs which other kind.
Solid arrows mean "creates". Dotted arrows mean "references", and the label names the field under spec that holds the reference.
If one label stands for more than one field, a table under the diagram lists the fields.
A kind that appears in more than one diagram, such as CamundaCluster or SecondaryStorageConfig, links those diagrams.
Cluster inputs¶
A CamundaCluster reads its preset, its release, the platform settings, its secondary storage, and its buckets.
graph LR
CC[CamundaCluster]
CCP[CamundaClusterPreset]
CR[CamundaRelease]
PFC[CamundaPlatformConfig]
SSC[SecondaryStorageConfig]
OSC[ObjectStorageConfig]
CC -.->|presetRef| CCP
CC -.->|releaseRef| CR
CC -.->|platformConfigRef| PFC
CC -.->|storageRef| SSC
CC -.->|"backupStorageRef, documentStorageRef"| OSC
You can write the SecondaryStorageConfig by hand. An ElasticsearchCluster or a Database can also create it, as the next diagrams show.
Elasticsearch storage¶
An ElasticsearchCluster creates the SecondaryStorageConfig that a CamundaCluster reads in storageRef.
graph LR
ESC[ElasticsearchCluster]
ESCP[ElasticsearchClusterPreset]
CR[CamundaRelease]
OSC[ObjectStorageConfig]
SSC[SecondaryStorageConfig]
ESC -.->|presetRef| ESCP
ESC -.->|releaseRef| CR
ESC -.->|snapshotStorageRef| OSC
ESC -->|creates| SSC
PostgreSQL server¶
A DatabaseServer creates the DatabaseServerConfig that each Database on the server reads.
graph LR
DBS[DatabaseServer]
DBSP[DatabaseServerPreset]
CR[CamundaRelease]
PFC[CamundaPlatformConfig]
OSC[ObjectStorageConfig]
DBSC[DatabaseServerConfig]
DBS -.->|presetRef| DBSP
DBS -.->|releaseRef| CR
DBS -.->|platformConfigRef| PFC
DBS -.->|archive.objectStorageRef| OSC
DBS -->|creates| DBSC
PostgreSQL databases¶
A Database creates the DatabaseConfig of one logical database. If you set spec.secondaryStorageConfig, it also creates a SecondaryStorageConfig that a CamundaCluster can read.
graph LR
DB[Database]
DBSC[DatabaseServerConfig]
DBC[DatabaseConfig]
SSC[SecondaryStorageConfig]
DB -.->|serverRef| DBSC
DB -->|creates| DBC
DB -->|"creates (optional)"| SSC
DBC -.->|serverRef| DBSC
SSC -.->|rdbms.databaseConfigRef| DBC
Backups¶
Each backup references the CamundaCluster that it backs up. A BackupSchedule creates the backup kind that matches the secondary storage of the cluster.
graph LR
BS[BackupSchedule]
LBE[LogicalBackupElasticsearch]
LBR[LogicalBackupRDBMS]
CC[CamundaCluster]
BS -->|creates| LBE
BS -->|creates| LBR
BS -.->|clusterRef| CC
LBE -.->|clusterRef| CC
LBR -.->|clusterRef| CC
Restores¶
A logical restore reads one backup and restores it into a target CamundaCluster. A PointInTimeRestore references only the cluster.
graph LR
LRE[LogicalRestoreElasticsearch]
PITR[PointInTimeRestore]
LRR[LogicalRestoreRDBMS]
LBE[LogicalBackupElasticsearch]
CC[CamundaCluster]
LBR[LogicalBackupRDBMS]
LRE -.->|backupRef| LBE
LRE -.->|targetClusterRef| CC
PITR -.->|clusterRef| CC
LRR -.->|targetClusterRef| CC
LRR -.->|backupRef| LBR
Management plane¶
A CamundaManagementCluster creates a ManagementAuthConfig for Optimize. It serves the clusters that match its clusterSelector.
graph LR
MC[CamundaManagementCluster]
PFC[CamundaPlatformConfig]
DBC[DatabaseConfig]
MAC[ManagementAuthConfig]
CC[CamundaCluster]
MC -.->|platformConfigRef| PFC
MC -.->|databaseConfigRef| DBC
MC -->|creates| MAC
MC -.->|clusterSelector| CC
The management plane reads one DatabaseConfig for each database that it runs:
| Field | Database |
|---|---|
spec.identity.databaseConfigRef |
Management Identity |
spec.identityProvider.keycloak.databaseConfigRef |
Keycloak, when the operator runs it |
spec.webModeler.databaseConfigRef |
Web Modeler, when spec.webModeler is set |
Optimize¶
A CamundaOptimize serves one CamundaCluster. It reads the ManagementAuthConfig that a CamundaManagementCluster creates.
graph LR
OPT[CamundaOptimize]
MAC[ManagementAuthConfig]
CC[CamundaCluster]
OPT -.->|managementAuthRef| MAC
OPT -.->|clusterRef| CC