The Kubernetes operator for Apache Cloudberry.
Production-ready MPP analytics on Kubernetes.
Website • Documentation • Blog • Issues • Discussions
The Keldon Operator is a Kubernetes operator that automates the deployment, management, and operation of Apache Cloudberry and other Greenplum-family massively parallel processing (MPP) analytical databases. Built for teams running large-scale analytics workloads.
Apply two YAML files. Get a fully running MPP database cluster on Kubernetes in minutes. Coordinator, standby, segments, mirrors, services, certificates, SSH trust — all handled automatically.
- Kubernetes 1.29+
- cert-manager installed (required for the admission webhook)
- A
StorageClassthat supports dynamic provisioning
helm repo add keldon https://charts.keldon.io
helm repo update
helm install keldon-operator keldon/keldon-operator \
--namespace keldon-system --create-namespaceVerify the operator is running:
kubectl get pods -n keldon-system# database-image.yaml
apiVersion: keldon.io/v1alpha1
kind: DatabaseImage
metadata:
name: cloudberry-2.1.0
spec:
version: "2.1.0"
image: ghcr.io/keldonio/cloudberry:2.1.0
---
# database-cluster.yaml
apiVersion: keldon.io/v1alpha1
kind: DatabaseCluster
metadata:
name: cluster-demo
spec:
databaseImage: cloudberry-2.1.0
mirroring: true
standby:
enabled: true
storage: 10Gi
storageClassName: local-path
coordinator:
storage: 10Gi
storageClassName: local-path
segments:
count: 2
storage: 10Gi
storageClassName: local-pathkubectl apply -f database-image.yaml
kubectl apply -f database-cluster.yaml
kubectl get databasecluster -wFor full configuration options, custom topologies, and advanced features, see the documentation.
| Feature | Description |
|---|---|
| Automated Cluster Bootstrapping | Single CR provisions coordinator, segments, mirrors, and standby. Operator handles initialization, SSH key distribution, certificate provisioning, and service wiring. |
| High Availability at Every Layer | Standby coordinator with automatic failover. Mirror segments for query continuity. Configurable replication and recovery strategies. |
| Automatic Recovery and Rebalancing | Failed segments are detected and recovered without manual intervention. Data is automatically rebalanced across the cluster after recovery to maintain optimal performance. |
| Horizontal Scaling | Increase segment count on a running cluster without downtime. The operator provisions new segments and redistributes data automatically. |
| S3 Backups | On-demand full or filtered backups stored directly to S3-compatible object storage. Track backup status, size, duration, and storage location through native CRDs. |
| Restore from Backup | Restore a cluster from any prior backup with a single CR. Supports full database, schema-level, or table-level restores. Cross-cluster restores are supported. |
| Dynamic Short-Lived SSH Certificates | Inter-pod SSH authentication supports either traditional static authorized_keys or short-lived certificates signed by an operator-managed CA — selectable per cluster. Certificates rotate automatically; the CA can be rotated on demand. |
| Reusable Cluster Topologies | Define reusable cluster shapes once via DatabaseClusterClass. Reference them from multiple DatabaseCluster resources to enforce consistent topology, resources, and kernel settings across environments. |
| Centralized Database Configuration | Manage postgresql.conf and pg_hba.conf declaratively via DatabaseConfig resources. Configuration is version-controlled, validated, and applied consistently across all cluster pods. |
| Multi-Image Support | Register multiple database images via DatabaseImage resources. Reference a specific version per cluster, mix Cloudberry versions across environments, and roll out upgrades cleanly. |
| Kernel Tuning | Apply MPP-optimized kernel parameters automatically with spec.kernelTuning: true. Override individual parameters for fine-grained control via spec.kernelParameters. |
| Pod Health Probes | Built-in startup, readiness, and liveness probes for coordinator, standby, segments, and mirrors. Kubernetes-native health surfacing without custom tooling. |
For deeper documentation of every feature, see keldon.io/docs.
The Keldon Operator manages six custom resources under the keldon.io/v1alpha1 API group:
| Kind | Short Name | Purpose |
|---|---|---|
DatabaseCluster |
dbc |
The MPP cluster itself — coordinator, standby, segments, mirrors. |
DatabaseImage |
dbi |
Reference to a container image and database version. Cluster-scoped. |
DatabaseClusterClass |
dcc |
Reusable cluster topology, resources, and kernel settings. |
DatabaseConfig |
dbx |
Declarative postgresql.conf and pg_hba.conf management. |
DatabaseBackup |
dbb |
On-demand backup to S3-compatible storage. |
DatabaseRestore |
dbr |
Restore operation from a DatabaseBackup into a cluster. |
git clone https://github.com/keldonio/keldon-operator
cd keldon-operator
make build # build the operator binary
make test # run unit tests
make install # install CRDs into your current cluster
make run # run the operator locally against your clusterFor testing against a real Kubernetes cluster, see the contributor docs in CONTRIBUTING.md.
The Keldon Operator is open source and welcomes contributions of all kinds — bug fixes, features, documentation, and tests.
Before contributing, please read the Contributing Guide and the Code of Conduct.
By submitting a pull request, you agree to the terms of our Contributor License Agreement.
- Slack community — coming soon
- GitHub Discussions
- Blog
The Keldon Operator is licensed under the Apache License 2.0.
Apache Cloudberry is an effort undergoing incubation at The Apache Software Foundation (ASF). Apache®, Apache Cloudberry, and the Apache logo are trademarks of the Apache Software Foundation.
Greenplum is a trademark of Broadcom Inc. and its affiliates.
The Keldon Operator is an independent open-source project. All trademarks and product names referenced are property of their respective owners.
Website • Documentation • GHCR • Issues • Discussions
