Postgres Operator
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.
Operator features
- 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.
- 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
- Support for AWS EBS gp2 to gp3 migration, supporting iops and throughput configuration
- Compatible with OpenShift
PostgreSQL features
- Supports PostgreSQL 16, starting from 11+
- Streaming replication cluster via Patroni
- Point-In-Time-Recovery with
pg_basebackup /
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_partman,
pg_stat_kcache,
pgq,
pgvector,
plpgsql_check,
postgis,
set_user and
timescaledb
The Postgres Operator has been developed at Zalando and is being used in
production for over five years.
Supported Postgres & K8s versions
Release |
Postgres versions |
K8s versions |
Golang |
v1.11.* |
11 → 16 |
1.21 → 1.28 |
1.21.7 |
v1.10.* |
10 → 15 |
1.21 → 1.28 |
1.19.8 |
v1.9.0 |
10 → 15 |
1.21 → 1.28 |
1.18.9 |
v1.8.* |
9.5 → 14 |
1.20 → 1.24 |
1.17.4 |
v1.7.1 |
9.5 → 14 |
1.20 → 1.24 |
1.16.9 |
Getting started
For a quick first impression follow the instructions of this
tutorial.
Supported setups of Postgres and Applications
Documentation
There is a browser-friendly version of this documentation at
postgres-operator.readthedocs.io