Postgres operator creates and manages PostgreSQL clusters running in Kubernetes
Go to file
Nandan acb88d9b93 2867: Configurable api group for postgres operator with default
In Kubernetes, there is tight coupling of API group, CRD and Custom Resources managed by operators. CRDs are cluster resource and unique per cluster.
CRD operatorconfigurations.acid.zalan.do defines the operator configurations for postgres operator.
CRD postgresqls.acid.zalan.do defines minimum and maximum supported postgresql versions.

This leads to issues in a multi-tenant k8s cluster, an example provided below.

In Namespace X, user X deploys web tier application which uses zalando postgres-operator with max version PG 15.
In Namespace Y, user Y deploys web tier application which also uses zalando postgres-operator but needs PG 17 runs into an issue as CRD postgresqls.acid.zalan.do supports only PG 15. This happens because CRD is cluster scope and all namespace scoped applications should adhere to it.

With large k8s clusters, postgresql being a very popular database, zalando postgres operator being defacto way to manage databases, there is a need to keep this configurable so applications can manage the API group of CRDs.

Take API group for postgres operator as an env variable, assuming that the relevant CRDs with API groups are installed.
2025-02-24 09:01:52 -08:00
.github bump to go 1.23.4 (#2824) 2024-12-23 09:54:51 +01:00
charts Update logical backup docker image (#2829) 2025-01-07 09:10:22 +01:00
cmd Add abitility to set QPS and Burst limits for api client (#2667) 2024-12-23 08:53:27 +01:00
docker bump to go 1.23.4 (#2824) 2024-12-23 09:54:51 +01:00
docs Critical operation PDB (#2830) 2025-01-29 12:41:08 +01:00
e2e fix creating secrets for rotation users (#2863) 2025-02-14 09:44:09 +01:00
hack update go and dependencies (#2554) 2024-02-23 13:58:11 +01:00
kubectl-pg bump to go 1.23.4 (#2824) 2024-12-23 09:54:51 +01:00
logical-backup Add support for pg17 and remove pg12 (#2773) 2024-12-20 11:22:52 +01:00
manifests bump operator to 1.14.0 (#2827) 2024-12-23 12:12:33 +01:00
mocks Support EBS gp2 to gp3 migration on sync for below 1tb volumes (#1242) 2020-12-11 15:52:32 +01:00
pkg 2867: Configurable api group for postgres operator with default 2025-02-24 09:01:52 -08:00
ui bump operator to 1.14.0 (#2827) 2024-12-23 12:12:33 +01:00
.flake8 Implement runner for e2e tests (#548) 2019-06-05 17:07:27 +02:00
.gitignore Add support for EBS CSI Driver (#2677) 2024-12-19 12:32:09 +01:00
.golangci.yml add .golangci.yml (#422) 2018-11-27 12:00:15 +01:00
.zappr.yaml Min 2 zalando approvers. (#1338) 2021-01-29 11:12:08 +01:00
CODEOWNERS chore: add "macedigital" as codeowner & maintainer (#2511) 2024-01-11 18:51:22 +01:00
CONTRIBUTING.md Update docs for v1.2 (#609) 2019-07-11 17:19:27 +02:00
LICENSE update go and dependencies (#2554) 2024-02-23 13:58:11 +01:00
MAINTAINERS chore: add "macedigital" as codeowner & maintainer (#2511) 2024-01-11 18:51:22 +01:00
Makefile bump to go 1.23.4 (#2824) 2024-12-23 09:54:51 +01:00
README.md bump to go 1.23.4 (#2824) 2024-12-23 09:54:51 +01:00
SECURITY.md docs(general): Adding Security.md (#88) 2017-09-04 14:33:30 +02:00
build-ci.sh reflect change in github url (#496) 2019-02-25 11:26:55 +01:00
delivery.yaml chore: simplify delivery-yaml for building operator (#2673) 2024-06-26 18:39:20 +02:00
go.mod bump to go 1.23.4 (#2824) 2024-12-23 09:54:51 +01:00
go.sum Bump golang.org/x/crypto from 0.26.0 to 0.31.0 (#2816) 2024-12-17 14:07:15 +01:00
mkdocs.yml Initial commit for new 1.6 release with Postgres 13 support. (#1257) 2020-12-17 15:00:29 +01:00
run_operator_locally.sh run_operator_locally.sh: more retrying, debuggability (#2218) 2023-04-19 12:05:36 +02:00

README.md

Postgres Operator

Tests E2E Tests Coverage Status

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
  • Compatible with OpenShift

PostgreSQL features

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.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
v1.9.0 10 → 15 1.21+ 1.18.9

Getting started

For a quick first impression follow the instructions of this tutorial.

Supported setups of Postgres and Applications

Features Features

Documentation

There is a browser-friendly version of this documentation at postgres-operator.readthedocs.io