The Postgres Operator delivers an easy to run highly-available PostgreSQL clusters on Kubernetes (K8s) powered by Patroni. It is configured only through Postgres manifests (CRDs) to ease integration into automated CI/CD pipelines with no access to Kubernetes API directly, promoting infrastructure as code vs manual operations.
This fork by Edenlab LLC extends the connectionPooler section of the
Postgres CR with optional, backward-compatible pooler-specific pod template and deployment
settings. When omitted, behavior matches upstream Zalando Postgres Operator v1.15.1.
New fields:
- inheritPodAnnotations / podAnnotations — apply
spec.podAnnotationsto Spilo pods only and set pooler annotations separately (e.g. keep Prometheus scrape on Postgres, not on PgBouncer). - inheritPodLabels / podLabels — same pattern for labels.
- nodeAffinity / podAntiAffinity — pooler-specific scheduling overrides.
- deploymentStrategy — control pooler Deployment rollout (e.g.
maxSurge: 0/maxUnavailable: 1on small clusters with required pod anti-affinity).
See connection pooler parameters and examples for details.
It also adds GitHub Actions workflows to build and publish Docker images.
Images are published to the public ECR gallery: public.ecr.aws/edenlabllc/core.postgres-operator
Fork changes are based on upstream
v1.15.1 and released under
Git tags such as v1.15.2
(Gitflow: merge release/v1.15.2 into master, CI tags and publishes the image).
- Rolling updates on Postgres cluster changes, incl. quick minor version updates
- Live volume resize without pod restarts (AWS EBS, PVC)
- Database connection pooling with PGBouncer
- Support fast in place major version upgrade. Supports global upgrade of all clusters.
- Pod protection during bootstrap phase and configurable maintenance windows
- Restore and cloning Postgres clusters on AWS, GCS and Azure
- Additionally logical backups to S3 or GCS bucket can be configured
- Standby cluster from S3 or GCS WAL archive
- Configurable for non-cloud environments
- Basic credential and user management on K8s, eases application deployments
- Support for custom TLS certificates
- UI to create and edit Postgres cluster manifests
- Compatible with OpenShift
- Supports PostgreSQL 18, starting from 14+
- Streaming replication cluster via Patroni
- Point-In-Time-Recovery with pg_basebackup / WAL-G or WAL-E via Spilo
- Preload libraries: bg_mon, pg_stat_statements, pgextwlist, pg_auth_mon
- Incl. popular Postgres extensions such as decoderbufs, hypopg, pg_cron, pg_repack, pg_partman, pg_stat_kcache, pg_audit, pgfaceting, pgq, pgvector, plpgsql_check, plproxy, postgis, roaringbitmap, set_user and timescaledb
The Postgres Operator has been developed at Zalando and is being used in production for over five years.
| Release | Postgres versions | K8s versions | Golang |
|---|---|---|---|
| next | 14 → 18 | 1.27+ | 1.26.4 |
| v1.15.1 | 13 → 17 | 1.27+ | 1.25.3 |
| v1.14.0 | 13 → 17 | 1.27+ | 1.23.4 |
| v1.13.0 | 12 → 16 | 1.27+ | 1.22.5 |
| v1.12.0 | 11 → 16 | 1.27+ | 1.22.3 |
| v1.11.0 | 11 → 16 | 1.27+ | 1.21.7 |
| v1.10.1 | 10 → 15 | 1.21+ | 1.19.8 |
For a quick first impression follow the instructions of this tutorial.
There is a browser-friendly version of this documentation at postgres-operator.readthedocs.io


