PostgreSQL Operators on Kubernetes:
The Honest Comparison
4 Active Operators. No Marketing Fluff. Real Trade-offs.
Running PostgreSQL on Kubernetes means choosing an operator — and the wrong choice can cost you months. We compared Percona, CloudNativePG, Zalando, and StackGres across features, community health, business viability, and day-2 operations. No vendor paid for placement on this page.
Enterprise-grade operator built on top of Crunchy's PGO foundation. Part of the broader Percona ecosystem covering MySQL, MongoDB, and PostgreSQL.
Docs →Born at EDB, donated to the community. CNCF Sandbox project. Kubernetes-native from the ground up — no StatefulSets, custom pod controller, Level V operator.
Docs →The OG PostgreSQL operator. Battle-tested at Zalando scale (thousands of clusters). Patroni-based HA. Lean scope — delegates monitoring and tuning to external tools.
Docs →Full-stack PostgreSQL distribution. Opinionated — ships with connection pooling, monitoring, logging, sharding, and a web console. "Enterprise Postgres made easy."
Docs →The Radar View
Click an operator to highlight its strengths. Click a dimension to see the detailed breakdown below. Scores are based on documented features, not marketing claims.
Deep Dive: What Actually Matters
Each card unpacks a critical dimension. Click to expand and see how each operator handles it differently.
High Availability & Failover How fast does the system recover when things break?▾
- Patroni-based HA with DCS (distributed consensus storage)
- Automated failover with configurable timeouts
- Synchronous replication supported
- Cross-cluster standby with streaming replication
- pgBouncer included for connection pooling during failover
- No external DCS needed — uses Kubernetes API directly for leader election
- Quorum-based failover for enhanced safety
- Synchronous replication with configurable quorum
- Replica clusters across multiple K8s clusters (distributed topology)
- Delayed replicas for point-in-time access to historical data
- HA replication slots with automatic synchronization
- Patroni-based HA — the original Patroni operator
- Uses Kubernetes endpoints as DCS (or etcd)
- Battle-tested at Zalando (2000+ clusters)
- Synchronous replication configurable via manifest
- No built-in cross-cluster replication
- Patroni-based HA with full Patroni configuration exposed
- Sync, async, and group replication modes
- Built-in Envoy proxy for connection routing during failover
- Cross-cluster support via standby clusters
Backup & Recovery Can you restore to any point in time? How complex is setup?▾
- pgBackRest — the gold standard for PostgreSQL backups
- Full, differential, and incremental backups
- Point-in-Time Recovery (PITR)
- S3, GCS, Azure Blob storage supported
- PVC snapshots for fast cloning
- Backup encryption and retention policies
- Backup from standby to reduce primary load
- Plugin architecture (CNPG-I) — pluggable backup providers
- Barman Cloud plugin (community supported)
- Volume snapshots for fast backup/restore
- WAL archiving to object stores (S3, GCS, Azure)
- PITR supported
- Backup from standby
- Retention policies via recovery windows
- WAL-E / WAL-G for WAL archiving
- Basebackups to S3
- PITR via WAL replay
- Clone from existing cluster or S3 backup
- No built-in backup scheduling UI
- No PVC snapshots
- WAL-G with automated lifecycle management
- Full and PITR recovery
- S3, GCS, Azure Blob supported
- Automated backup scheduling via CRD
- Backup retention policies
- Web console for backup management
Day-2 Operations Upgrades, scaling, vacuum, repack — the stuff that matters at 3 AM.▾
- Minor version rolling upgrades
- Major version upgrade (pg_upgrade in-place or via backup/restore)
- Operator upgrade with backwards compatibility
- Horizontal scaling (add/remove replicas)
- Cluster pause/resume
- Extension upgrades
- Online and offline import (including major upgrades via logical replication)
- Rolling updates for minor versions
- In-place offline major upgrades
- Scale up/down dynamically
- Cluster hibernation (stop all pods, keep PVCs)
- Fencing (isolate misbehaving instances)
- Declarative role/database/extension management
- Rolling updates for pod image changes
- Scaling via manifest change
- Database and role provisioning via manifest
- No built-in major version upgrade tooling
- No vacuum or repack automation
- Minimal lifecycle management beyond provisioning
- DbOps CRD — declarative day-2 operations
- Automated minor and major version upgrades
- Automated vacuum, repack, restart as CRD operations
- Rollout strategy (in-place or reduced-impact)
- Security patches via container upgrades
- Web console for all operations
Monitoring & Observability Out-of-the-box metrics, logs, and dashboards — or bring-your-own?▾
- Percona Monitoring and Management (PMM) integration
- Query Analytics (QAN) — deep query-level insights
- Pre-built Grafana dashboards
- Prometheus exporter included
- PostgreSQL-specific advisors and checks
- Prometheus-compatible metrics exporter (port 9187)
- JSON-structured logging to stdout
- Custom metrics via ConfigMap
- No bundled dashboards (community provides them)
- Integrates with any Prometheus/Grafana stack
- Sidecars for monitoring (configurable globally)
- No built-in monitoring stack
- Designed to work with ZMON (Zalando's internal tool) or Prometheus
- Basic pod metrics via Kubernetes
- Logging via Patroni output
- Full observability stack included
- Prometheus postgres_exporter + custom metrics
- Envoy proxy metrics (connection-level visibility)
- FluentBit for distributed log collection
- OTEL Collector for metrics, logs, traces
- Pre-built Grafana dashboards
- Web console with cluster health overview
Extensions, Pooling & Extras PostGIS? Sharding? Connection pooling? What comes in the box?▾
- pgBouncer for connection pooling (built-in)
- Custom extensions management via CR
- PostGIS supported
- Percona Distribution includes common extensions
- No sharding support
- LDAP authentication supported
- PgBouncer connection pooler (native integration)
- Declarative extension management
- Tablespace support (including temporary)
- No sharding support
- Plugin architecture (CNPG-I) for extensibility
- Foreign Data Wrappers declaratively managed
- Connection pooling via external configuration
- Extensions loaded from Spilo image
- No extension lifecycle management
- No sharding
- Database and role provisioning via manifest
- 150+ PostgreSQL extensions available
- PgBouncer for connection pooling (integrated)
- Sharding support (Citus-based horizontal scaling)
- Babelfish for T-SQL compatibility
- CDC streaming with Debezium
- Cluster profiles (production, testing, development)
Security & Compliance TLS, encryption at rest, RBAC, audit logging — the non-negotiables.▾
- TLS everywhere (client, replication, backup)
- cert-manager integration
- Backup encryption (AES-256)
- LDAP authentication
- Percona-certified container images with SBOMs
- Private registry support (air-gapped)
- TLS by default (auto-generated or custom certs)
- cert-manager integration
- Client certificate authentication
- Signed images with SBOM and provenance attestations
- Distroless and UBI9 image options
- Pod security standards compliance
- TLS support (configurable)
- Pod-level RBAC
- No built-in backup encryption
- Team-based access control via manifest
- Spilo images (community-maintained)
- TLS for all connections
- Secret management integration
- Web console with authentication
- RBAC for cluster operations
- Container image security scanning
The Evolution Timeline
Who shipped what, and when? Hover over milestones to see the details. The most active projects push the most commits.
Current Development Velocity (2025-2026)
Community Health & Business Viability
An operator's features mean nothing if the project dies in 2 years. Here's what the signals look like for long-term bets.
Percona is a profitable, established database company with 18+ years of history. The operator is strategic to their business (powers their managed service and OpenEverest platform). Low risk of abandonment. However, community contributions are limited — this is primarily a corporate project.
The strongest community story. CNCF governance means no single company can kill it. Multiple vendors provide commercial support. Most active development velocity in the space. The safe long-term bet from a governance perspective.
The OG operator with massive real-world usage. But: Zalando is an e-commerce company, not a database company. The operator exists because Zalando needs it internally — if they change strategy, the project could stagnate. No official commercial support available. PR merge velocity has slowed. Still functional and battle-tested, but watch the signals.
Small but focused team. StackGres is the company's primary product — they are highly motivated to keep it alive and competitive. The AGPL license is a consideration for some organizations. Startup risk exists, but their PostgreSQL expertise is deep and the feature velocity is impressive.
Was a major player (GitHub stars: ~3,900+). CrunchyData shifted focus to their commercial product (Crunchy Bridge) and effectively stopped open-source development. The operator still works but receives no meaningful updates. This is the cautionary tale: even popular operators can be abandoned when the backing company's strategy changes.
Effectively abandoned No new featuresWhich Operator Is Right for You?
Pick what matters most to your team. We'll highlight the best fit.
Select your top 3 priorities:
The Honest Verdicts
No "it depends" cop-out. Here's when each operator is the right choice — and when it isn't.
- You want the most Kubernetes-native approach (no external DCS, no StatefulSets)
- Long-term project safety matters — CNCF governance protects you
- You value declarative everything: roles, databases, extensions, schemas
- You need distributed topologies across multiple K8s clusters
- Clean architecture > maximum bundled features
- You need a web console for team onboarding — there isn't one
- You want out-of-the-box monitoring dashboards — you'll build your own
- You need sharding or Babelfish — not in scope
- You manage MySQL and MongoDB too — CNPG is PostgreSQL-only
- You run PostgreSQL and MySQL and/or MongoDB on Kubernetes
- You want enterprise support with SLAs from a database company
- PMM (Percona Monitoring) is valuable — query analytics, advisors
- pgBackRest (gold-standard backup tool) is non-negotiable
- You're evaluating OpenEverest as a unified database platform
- You prefer community-driven governance over corporate-driven
- You only run PostgreSQL and want maximum K8s-native design
- You want to avoid any Patroni-based HA (CNPG is the alternative)
- Minimal footprint is the priority — Percona's stack is heavier
- You want everything in one package: monitoring, pooling, logging, backups, web console
- Day-2 operations as CRDs (DbOps) is a game-changer for your team
- You need sharding (Citus) or Babelfish (T-SQL) compatibility
- 150+ extensions out of the box matters
- A web console helps your team adopt Kubernetes databases
- AGPL licensing is a problem for your legal team
- You prefer minimalism — StackGres is opinionated and full-stack
- You're uncomfortable with smaller-company risk (OnGres)
- You want CNCF-level governance guarantees
- You've run Patroni before and want the same model on Kubernetes
- MIT license with no strings attached is important
- You have your own monitoring, backup, and operations tooling already
- Proven at massive scale (thousands of clusters) gives you confidence
- You don't need the operator to do everything — just provisioning and HA
- You need a supported, actively-evolving project with fast release cycles
- Enterprise support or SLAs are required
- You want declarative day-2 operations (upgrades, vacuum, repack)
- Backup tooling beyond WAL-G basics is needed
- You're worried about single-company dependency with no commercial backing
Solanica + OpenEverest: The Operator Problem, Solved
OpenEverest wraps Percona's operators into a unified control plane — giving you PostgreSQL, MySQL, and MongoDB on any Kubernetes cluster with a single management interface, enterprise support, and no operator sprawl.