Help us shape the future of Go! Take the 2026 Go Developer Survey

camunda-operator

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2026 License: Apache-2.0

README

Camunda Operator

Artifact Hub

A Kubernetes operator for Camunda 8 Self-Managed as a platform. Use it to offer Camunda 8.9+ as a service to the teams in your organization, on infrastructure that you run.

One operator runs the orchestration clusters, their Elasticsearch or PostgreSQL storage, the management plane, and Optimize, and connects them for you. A PostgreSQL server that you run yourself works too. A platform team writes the sizing and the versions once, in presets and releases. Each new cluster is then a few lines.

The operator runs on any Kubernetes cluster that meets the requirements, including bare metal. It never creates cloud resources such as buckets or IAM roles, so you bring those yourself.

The documentation is at konsole-is.github.io/camunda-operator. It opens at the latest release. The version selector in its header also has the docs of each release and the dev docs of main.

[!WARNING] The operator is in early development. The API group is core.camunda.io/v1, but the API can still change before the first stable release.

Features

Area What you get Kinds
Orchestration Zeebe, the gateway, Operate, Tasklist, Admin, and optionally Connectors, in any topology configuration CamundaCluster
Management plane Management Identity, Console, Web Modeler, and optionally Keycloak CamundaManagementCluster
Optimize One Optimize for each cluster that needs it CamundaOptimize
Storage Elasticsearch through ECK, PostgreSQL through CloudNativePG, and logical databases on any PostgreSQL server ElasticsearchCluster, DatabaseServer, Database
Backup and restore Backups to a bucket, on demand or on a schedule, restores into a suspended cluster, and point-in-time restore of PostgreSQL LogicalBackup*, BackupSchedule, LogicalRestore*, PointInTimeRestore
Operations Version upgrades that refuse a downgrade, suspend and resume, storage growth, and password rotation The operations guide
Authentication and license Basic authentication or OIDC, and the license key, shared by many clusters CamundaPlatformConfig
Fleet management Presets for the sizing, and releases for the versions and the images *Preset, CamundaRelease

The CRD reference lists every kind with every field.

Examples

config/example holds complete setups that you can apply. There is a cluster on Elasticsearch, a cluster on PostgreSQL, and a management plane with Keycloak or with your own identity provider. Each directory has a README with the apply order.

The cluster of the PostgreSQL example is below. It names a preset and a release, and the platform config and the storage that the same example creates before it.

apiVersion: core.camunda.io/v1
kind: CamundaCluster
metadata:
  name: my-cluster
  namespace: my-cluster-ns
spec:
  presetRef: small
  releaseRef: camunda-8-9
  platformConfigRef: my-platform-config
  storageRef: my-storage-config

The broker count, the volumes, and the resources come from the preset small. The Camunda version comes from the release camunda-8-9. The presets guide explains both kinds.

Install

Check the requirements first. A few optional features need another operator, and only when you use them. An ElasticsearchCluster needs ECK, a DatabaseServer needs CloudNativePG, and a Keycloak that the operator runs needs the Keycloak Operator. This operator does not install them.

helm install camunda-operator \
  oci://ghcr.io/konsole-is/charts/camunda-operator \
  --version <version> \
  --namespace camunda-operator-system \
  --create-namespace

The installation guide covers plain manifests, signature verification, CRDs installed separately, upgrades, and removal.

Run your first cluster

Getting started takes you from an empty Kubernetes cluster to a running Camunda cluster that you can log in to.

Documentation

The documentation site has a version for each minor release and a dev version for main. The site opens at latest, the newest release. The links in this README go to dev, which matches the code on main.

Development

make test           # unit and envtest suites (needs Docker for the PostgreSQL testcontainer)
make lint           # golangci-lint, the line-split shape of calls, and the version pins of config/example
make vulncheck      # known vulnerabilities that the code can reach (run it with the Go of .tool-versions)
make all            # generate manifests and deepcopy, fmt, vet, build
make test-e2e       # end-to-end suite on a new kind cluster (needs Docker and kind)
make helm-generate  # regenerate dist/chart/ from config/
make docs-serve     # preview the documentation site

dist/chart/values.yaml, dist/chart/values.schema.json, and dist/chart/templates/ are generated. Change the defaults in config/ and run make helm-generate.

Issues and pull requests are welcome at github.com/konsole-is/camunda-operator.

License

Apache License 2.0.

Directories

Path Synopsis
api module
cmd
camunda-operator-cli command
camunda-operator-cli is the command-line companion of the operator.
camunda-operator-cli is the command-line companion of the operator.
conformance module
hack
callsplit command
Command callsplit enforces one shape for a call that spans lines.
Command callsplit enforces one shape for a call that spans lines.
exampleversions command
Command exampleversions proves that the example inventories run the versions the end-to-end suite tests.
Command exampleversions proves that the example inventories run the versions the end-to-end suite tests.
helmcli command
Command helmcli exposes the camunda-operator-cli image as its own chart value.
Command helmcli exposes the camunda-operator-cli image as its own chart value.
helmschema command
Command helmschema writes values.schema.json of the Helm chart from the generated values.yaml.
Command helmschema writes values.schema.json of the Helm chart from the generated values.yaml.
sentencelength command
Command sentencelength reports the sentences of the user docs that break the simple-english rules: a procedural sentence over 20 words, a descriptive sentence over 25 words, a semicolon, and the modals "would", "could" and "may".
Command sentencelength reports the sentences of the user docs that break the simple-english rules: a procedural sentence over 20 words, a descriptive sentence over 25 words, a semicolon, and the modals "would", "could" and "may".
internal
cli/deleteobject
Package deleteobject is the delete subcommand of camunda-operator-cli, which the cleanup Job of a deleted backup runs.
Package deleteobject is the delete subcommand of camunda-operator-cli, which the cleanup Job of a deleted backup runs.
cli/download
Package download is the download subcommand of camunda-operator-cli, which the restore Job runs as its init container.
Package download is the download subcommand of camunda-operator-cli, which the restore Job runs as its init container.
cli/storageenv
Package storageenv reads the bucket half of the environment contract that pkg/components/logicalbackuprdbms renders into the backup Jobs.
Package storageenv reads the bucket half of the environment contract that pkg/components/logicalbackuprdbms renders into the backup Jobs.
cli/upload
Package upload is the upload subcommand of camunda-operator-cli, which the dump Job runs as its main container.
Package upload is the upload subcommand of camunda-operator-cli, which the dump Job runs as its main container.
controller/backupschedule
Package backupschedule reconciles a BackupSchedule.
Package backupschedule reconciles a BackupSchedule.
controller/camundacluster
Package camundacluster reconciles the CamundaCluster CR.
Package camundacluster reconciles the CamundaCluster CR.
controller/camundamanagementcluster
Package camundamanagementcluster reconciles the CamundaManagementCluster CR.
Package camundamanagementcluster reconciles the CamundaManagementCluster CR.
controller/camundaoptimize
Package camundaoptimize reconciles the CamundaOptimize CR.
Package camundaoptimize reconciles the CamundaOptimize CR.
controller/camundaplatformconfig
Package camundaplatformconfig validates CamundaPlatformConfig resources and maintains their Ready condition.
Package camundaplatformconfig validates CamundaPlatformConfig resources and maintains their Ready condition.
controller/database
Package database reconciles the Database CR.
Package database reconciles the Database CR.
controller/databaseconfig
Package databaseconfig validates DatabaseConfig contracts and maintains their Ready condition.
Package databaseconfig validates DatabaseConfig contracts and maintains their Ready condition.
controller/databaseserver
Package databaseserver reconciles the DatabaseServer CR.
Package databaseserver reconciles the DatabaseServer CR.
controller/databaseserverconfig
Package databaseserverconfig validates DatabaseServerConfig contracts and maintains their Ready condition.
Package databaseserverconfig validates DatabaseServerConfig contracts and maintains their Ready condition.
controller/elasticsearchcluster
Package elasticsearchcluster reconciles the ElasticsearchCluster CR.
Package elasticsearchcluster reconciles the ElasticsearchCluster CR.
controller/logicalbackupelasticsearch
Package logicalbackupelasticsearch reconciles LogicalBackupElasticsearch.
Package logicalbackupelasticsearch reconciles LogicalBackupElasticsearch.
controller/logicalbackuprdbms
Package logicalbackuprdbms reconciles a LogicalBackupRDBMS.
Package logicalbackuprdbms reconciles a LogicalBackupRDBMS.
controller/logicalrestoreelasticsearch
Package logicalrestoreelasticsearch reconciles a LogicalRestoreElasticsearch.
Package logicalrestoreelasticsearch reconciles a LogicalRestoreElasticsearch.
controller/logicalrestorerdbms
Package logicalrestorerdbms reconciles a LogicalRestoreRDBMS.
Package logicalrestorerdbms reconciles a LogicalRestoreRDBMS.
controller/managementauthconfig
Package managementauthconfig validates ManagementAuthConfig contracts and maintains their Ready condition.
Package managementauthconfig validates ManagementAuthConfig contracts and maintains their Ready condition.
controller/objectstorageconfig
Package objectstorageconfig validates ObjectStorageConfig contracts and maintains their Ready condition.
Package objectstorageconfig validates ObjectStorageConfig contracts and maintains their Ready condition.
controller/pointintimerestore
Package pointintimerestore reconciles a PointInTimeRestore.
Package pointintimerestore reconciles a PointInTimeRestore.
controller/secondarystorageconfig
Package secondarystorageconfig validates SecondaryStorageConfig contracts and maintains their Ready condition.
Package secondarystorageconfig validates SecondaryStorageConfig contracts and maintains their Ready condition.
manager
Package manager holds the scheme and the cache configuration of the manager.
Package manager holds the scheme and the cache configuration of the manager.
observability
Package observability owns the Prometheus collectors of the framework metrics and builds the recorder that each controller feeds them through.
Package observability owns the Prometheus collectors of the framework metrics and builds the recorder that each controller feeds them through.
pkg
adminhttp
Package adminhttp is the HTTP core of the administration clients of this operator.
Package adminhttp is the HTTP core of the administration clients of this operator.
adminhttp/adminhttptest
Package adminhttptest is the core of the fake administration servers that the client packages test against.
Package adminhttptest is the core of the fake administration servers that the client packages test against.
camundaadmin
Package camundaadmin is the administration client of the orchestration cluster: pure HTTP, no Kubernetes types.
Package camundaadmin is the administration client of the orchestration cluster: pure HTTP, no Kubernetes types.
camundaadmin/camundaadmintest
Package camundaadmintest fakes the Camunda 8.9 management API for tests.
Package camundaadmintest fakes the Camunda 8.9 management API for tests.
camundaconfig
Package camundaconfig declares every unified-configuration key, Spring profile, and plain environment variable that the operator sets on a Camunda 8.9 container.
Package camundaconfig declares every unified-configuration key, Spring profile, and plain environment variable that the operator sets on a Camunda 8.9 container.
clusterclaim
Package clusterclaim holds the mutual exclusion of one CamundaCluster.
Package clusterclaim holds the mutual exclusion of one CamundaCluster.
components/camundacluster
Package camundacluster renders the resources that a CamundaCluster CR publishes.
Package camundacluster renders the resources that a CamundaCluster CR publishes.
components/camundamanagementcluster
Package camundamanagementcluster renders the resources of one management plane: Management Identity, the Keycloak of the keycloak mode, Console, the two Web Modeler processes, the generated credential Secrets, and the copies of referenced Secrets from other namespaces.
Package camundamanagementcluster renders the resources of one management plane: Management Identity, the Keycloak of the keycloak mode, Console, the two Web Modeler processes, the generated credential Secrets, and the copies of referenced Secrets from other namespaces.
components/camundaoptimize
Package camundaoptimize renders the resources of one CamundaOptimize: the webapp Deployment, the importer Deployment, a Service and an optional ServiceMonitor for each of them, and the copies of referenced Secrets from other namespaces.
Package camundaoptimize renders the resources of one CamundaOptimize: the webapp Deployment, the importer Deployment, a Service and an optional ServiceMonitor for each of them, and the copies of referenced Secrets from other namespaces.
components/database
Package database renders the resources that a Database CR publishes.
Package database renders the resources that a Database CR publishes.
components/databaseserver
Package databaseserver renders the resources that a DatabaseServer CR publishes.
Package databaseserver renders the resources that a DatabaseServer CR publishes.
components/elasticsearchcluster
Package elasticsearchcluster renders the resources that an ElasticsearchCluster CR publishes.
Package elasticsearchcluster renders the resources that an ElasticsearchCluster CR publishes.
components/logicalbackuprdbms
Package logicalbackuprdbms renders the Job that backs up the logical database of a relational orchestration cluster.
Package logicalbackuprdbms renders the Job that backs up the logical database of a relational orchestration cluster.
components/logicalrestorerdbms
Package logicalrestorerdbms renders the Job that restores a logical backup into the relational database of a suspended orchestration cluster.
Package logicalrestorerdbms renders the Job that restores a logical backup into the relational database of a suspended orchestration cluster.
conditions
Package conditions builds the aggregate Ready condition of a CRD that runs ocf components.
Package conditions builds the aggregate Ready condition of a CRD that runs ocf components.
credentials
Package credentials generates the passwords that the controllers publish in credential Secrets.
Package credentials generates the passwords that the controllers publish in credential Secrets.
esadmin
Package esadmin is the Elasticsearch administration client of the backup and restore flows: snapshot repositories, snapshots, snapshot restores, index resolution and deletion, index recovery, secure-settings reload, and node filesystem statistics.
Package esadmin is the Elasticsearch administration client of the backup and restore flows: snapshot repositories, snapshots, snapshot restores, index resolution and deletion, index recovery, secure-settings reload, and node filesystem statistics.
esadmin/esadmintest
Package esadmintest fakes the Elasticsearch administration APIs that pkg/esadmin calls: snapshot repositories, snapshots, snapshot restores, index resolution and deletion, index recovery, shard health, shard allocation explanations, secure-settings reload, and node filesystem statistics.
Package esadmintest fakes the Elasticsearch administration APIs that pkg/esadmin calls: snapshot repositories, snapshots, snapshot restores, index resolution and deletion, index recovery, shard health, shard allocation explanations, secure-settings reload, and node filesystem statistics.
grace
Package grace holds the grace periods of the components that run a workload, as the manager flags set them.
Package grace holds the grace periods of the components that run a workload, as the manager flags set them.
hostfold
Package hostfold renders one host name for the spellings of that name.
Package hostfold renders one host name for the spellings of that name.
images
Package images resolves the container images that the operator pulls.
Package images resolves the container images that the operator pulls.
keycloakadmin
Package keycloakadmin reads and writes clients and the realm roles of users through the administration API of a Keycloak realm.
Package keycloakadmin reads and writes clients and the realm roles of users through the administration API of a Keycloak realm.
labels
Package labels is the one place that knows which labels the operator puts on the resources it renders.
Package labels is the one place that knows which labels the operator puts on the resources it renders.
leaseclaim
Package leaseclaim holds the claim protocol that a resource uses to take a thing outside Kubernetes for itself.
Package leaseclaim holds the claim protocol that a resource uses to take a thing outside Kubernetes for itself.
logicalbackup
Package logicalbackup is the shared skeleton of the two logical backup kinds, LogicalBackupElasticsearch and LogicalBackupRDBMS: the reconcile pre-checks they run in the same order, the identifiers and key layout their artifacts carry, and the effective restore sizes they record.
Package logicalbackup is the shared skeleton of the two logical backup kinds, LogicalBackupElasticsearch and LogicalBackupRDBMS: the reconcile pre-checks they run in the same order, the identifiers and key layout their artifacts carry, and the effective restore sizes they record.
management
Package management builds clients for the management API that a CamundaCluster publishes in status.management.
Package management builds clients for the management API that a CamundaCluster publishes in status.management.
mirror
Package mirror is the reader side of the mirrored Secrets of a CamundaCluster.
Package mirror is the reader side of the mirrored Secrets of a CamundaCluster.
objectstore
Package objectstore opens the bucket that an ObjectStorageConfig describes and gives its consumers the small surface that backups need: upload, delete, and list.
Package objectstore opens the bucket that an ObjectStorageConfig describes and gives its consumers the small surface that backups need: upload, delete, and list.
pgbootstrap
Package pgbootstrap bootstraps logical databases and their users on an existing PostgreSQL server over plain, idempotent SQL.
Package pgbootstrap bootstraps logical databases and their users on an existing PostgreSQL server over plain, idempotent SQL.
podstate
Package podstate reports a pod that cannot start on its own.
Package podstate reports a pod that cannot start on its own.
refindex
Package refindex maps watch events on referenced objects back to the contract CRs naming them, via controller-runtime field indexes.
Package refindex maps watch events on referenced objects back to the contract CRs naming them, via controller-runtime field indexes.
restore
Package restore holds the code that every restore kind shares: the facts read off the live broker StatefulSet, the claim on the cluster, the preparation of the cluster, the recreated broker volumes, the restore Jobs, and the terminal branch.
Package restore holds the code that every restore kind shares: the facts read off the live broker StatefulSet, the claim on the cluster, the preparation of the cluster, the recreated broker volumes, the restore Jobs, and the terminal branch.
secretref
Package secretref checks the Secret references named by contract CRDs and digests the data they point to.
Package secretref checks the Secret references named by contract CRDs and digests the data they point to.
storagewriter
Package storagewriter registers a resource that writes a storage backend without a pod of a CamundaCluster, such as a restore.
Package storagewriter registers a resource that writes a storage backend without a pod of a CamundaCluster, such as a restore.
workloadmutations
Package workloadmutations layers the override surfaces of a WorkloadSpec onto the base Deployment of a component.
Package workloadmutations layers the override surfaces of a WorkloadSpec onto the base Deployment of a component.
workloadsuspend
Package workloadsuspend stops a workload that a controller holds at zero outside its render, and reports the drain the way ocf reports it.
Package workloadsuspend stops a workload that a controller holds at zero outside its render, and reports the drain the way ocf reports it.
wrappers/barmanobjectstore
Package barmanobjectstore holds the Go types of the ObjectStore custom resource of the Barman Cloud plugin for CloudNativePG, barmancloud.cnpg.io/v1, and the ocf primitive that reconciles it.
Package barmanobjectstore holds the Go types of the ObjectStore custom resource of the Barman Cloud plugin for CloudNativePG, barmancloud.cnpg.io/v1, and the ocf primitive that reconciles it.
wrappers/cnpgcluster
Package cnpgcluster provides a builder and resource for managing Cluster objects.
Package cnpgcluster provides a builder and resource for managing Cluster objects.
wrappers/cnpgscheduledbackup
Package cnpgscheduledbackup provides a builder and resource for managing ScheduledBackup objects.
Package cnpgscheduledbackup provides a builder and resource for managing ScheduledBackup objects.
wrappers/databaseconfig
Package databaseconfig provides a builder and resource for managing DatabaseConfig objects.
Package databaseconfig provides a builder and resource for managing DatabaseConfig objects.
wrappers/databaseserverconfig
Package databaseserverconfig provides a builder and resource for managing DatabaseServerConfig objects.
Package databaseserverconfig provides a builder and resource for managing DatabaseServerConfig objects.
wrappers/eckelasticsearch
Package eckelasticsearch provides a builder and resource for managing Elasticsearch objects.
Package eckelasticsearch provides a builder and resource for managing Elasticsearch objects.
wrappers/keycloak
Package keycloak holds the Go types of the Keycloak custom resource of the Keycloak Operator, k8s.keycloak.org/v2alpha1, and the ocf primitive that reconciles it.
Package keycloak holds the Go types of the Keycloak custom resource of the Keycloak Operator, k8s.keycloak.org/v2alpha1, and the ocf primitive that reconciles it.
wrappers/podmonitor
Package podmonitor provides a builder and resource for managing PodMonitor objects.
Package podmonitor provides a builder and resource for managing PodMonitor objects.
wrappers/secondarystorageconfig
Package secondarystorageconfig provides a builder and resource for managing SecondaryStorageConfig objects.
Package secondarystorageconfig provides a builder and resource for managing SecondaryStorageConfig objects.
wrappers/servicemonitor
Package servicemonitor provides a builder and resource for managing ServiceMonitor objects.
Package servicemonitor provides a builder and resource for managing ServiceMonitor objects.
test
envtest
Package envtest boots the envtest control plane that the controller suites share.
Package envtest boots the envtest control plane that the controller suites share.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL