Skip to content

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom

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
Hold "Alt" / "Option" to enable pan & zoom