Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ assignees: ''

Please, answer some short questions which should help us to understand your problem / question better?

- **Which image of the operator are you using?** e.g. ghcr.io/zalando/postgres-operator:v1.15.1
- **Which image of the operator are you using?** e.g. ghcr.io/zalando/postgres-operator:v2.0.0
- **Where do you run it - cloud or metal? Kubernetes or OpenShift?** [AWS K8s | GCP ... | Bare Metal K8s]
- **Are you running Postgres Operator in production?** [yes | no]
- **Type of issue?** [Bug report, question, feature request, etc.]
Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ pipelines with no access to Kubernetes API directly, promoting infrastructure as
* 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
* Standby cluster from S3 or GCS WAL archive or remote host
* 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
* Multi-arch support

### PostgreSQL features

Expand Down Expand Up @@ -63,23 +64,21 @@ production for over five years.

| Release | Postgres versions | K8s versions | Golang |
| :-------- | :---------------: | :---------------: | :-----: |
| next | 14 → 18 | 1.27+ | 1.26.4 |
| v2.0.0 | 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 |

## Getting started

For a quick first impression follow the instructions of this
[tutorial](docs/quickstart.md).

## Supported setups of Postgres and Applications
## Migrating from v1 to v2 operator

![Features](docs/diagrams/neutral_operator_dark.png#gh-dark-mode-only)
![Features](docs/diagrams/neutral_operator_light.png#gh-light-mode-only)
If you have been using Postgres Operator since v1.x (thank you), make sure you have read the [migration docs](docs/migrate.md) before deploying a v2 operator.

## Documentation

Expand Down
4 changes: 2 additions & 2 deletions charts/postgres-operator-ui/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: postgres-operator-ui
version: 1.15.1
appVersion: 1.15.1
version: 2.0.0
appVersion: 2.0.0
home: https://github.com/zalando/postgres-operator
description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience
keywords:
Expand Down
58 changes: 29 additions & 29 deletions charts/postgres-operator-ui/index.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,32 @@
apiVersion: v1
entries:
postgres-operator-ui:
- apiVersion: v2
appVersion: 2.0.0
created: "2026-07-27T16:59:53.405736+02:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: 37d2392421822a6dfeed20f3ea40420c52e4e4aaf90354d20aa27175fbad6c29
home: https://github.com/zalando/postgres-operator
keywords:
- postgres
- operator
- ui
- cloud-native
- patroni
- spilo
maintainers:
- email: opensource@zalando.de
name: Zalando
name: postgres-operator-ui
sources:
- https://github.com/zalando/postgres-operator
urls:
- postgres-operator-ui-2.0.0.tgz
version: 2.0.0
- apiVersion: v2
appVersion: 1.15.1
created: "2025-12-11T12:44:25.470723322+01:00"
created: "2026-07-27T16:59:53.405452+02:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: 4bbb750934366038d692711f924151182b7be131b6822d011f5a4e51cf609482
Expand All @@ -26,7 +49,7 @@ entries:
version: 1.15.1
- apiVersion: v2
appVersion: 1.14.0
created: "2025-12-11T12:44:25.468680645+01:00"
created: "2026-07-27T16:59:53.405196+02:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: e87ed898079a852957a67a4caf3fbd27b9098e413f5d961b7a771a6ae8b3e17c
Expand All @@ -49,7 +72,7 @@ entries:
version: 1.14.0
- apiVersion: v2
appVersion: 1.13.0
created: "2025-12-11T12:44:25.466716836+01:00"
created: "2026-07-27T16:59:53.404946+02:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: e0444e516b50f82002d1a733527813c51759a627cefdd1005cea73659f824ea8
Expand All @@ -72,7 +95,7 @@ entries:
version: 1.13.0
- apiVersion: v2
appVersion: 1.12.2
created: "2025-12-11T12:44:25.464739895+01:00"
created: "2026-07-27T16:59:53.404693+02:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: cbcef400c23ccece27d97369ad629278265c013e0a45c0b7f33e7568a082fedd
Expand All @@ -95,7 +118,7 @@ entries:
version: 1.12.2
- apiVersion: v2
appVersion: 1.11.0
created: "2025-12-11T12:44:25.462698399+01:00"
created: "2026-07-27T16:59:53.40439+02:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: a45f2284045c2a9a79750a36997386444f39b01ac722b17c84b431457577a3a2
Expand All @@ -116,27 +139,4 @@ entries:
urls:
- postgres-operator-ui-1.11.0.tgz
version: 1.11.0
- apiVersion: v2
appVersion: 1.10.1
created: "2025-12-11T12:44:25.460357063+01:00"
description: Postgres Operator UI provides a graphical interface for a convenient
database-as-a-service user experience
digest: 2e5e7a82aebee519ec57c6243eb8735124aa4585a3a19c66ffd69638fbeb11ce
home: https://github.com/zalando/postgres-operator
keywords:
- postgres
- operator
- ui
- cloud-native
- patroni
- spilo
maintainers:
- email: opensource@zalando.de
name: Zalando
name: postgres-operator-ui
sources:
- https://github.com/zalando/postgres-operator
urls:
- postgres-operator-ui-1.10.1.tgz
version: 1.10.1
generated: "2025-12-11T12:44:25.45732896+01:00"
generated: "2026-07-27T16:59:53.404012+02:00"
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion charts/postgres-operator-ui/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ replicaCount: 1
image:
registry: ghcr.io
repository: zalando/postgres-operator-ui
tag: v1.15.1
tag: v2.0.0
pullPolicy: "IfNotPresent"

# Optionally specify an array of imagePullSecrets.
Expand Down
4 changes: 2 additions & 2 deletions charts/postgres-operator/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: postgres-operator
version: 1.15.1
appVersion: 1.15.1
version: 2.0.0
appVersion: 2.0.0
home: https://github.com/zalando/postgres-operator
description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes
keywords:
Expand Down
4 changes: 2 additions & 2 deletions charts/postgres-operator/crds/operatorconfigurations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ spec:
type: boolean
type: object
docker_image:
default: ghcr.io/zalando/spilo-18:4.1-p1
default: ghcr.io/zalando/spilo-18:4.1-p2
type: string
enable_crd_registration:
default: true
Expand Down Expand Up @@ -644,7 +644,7 @@ spec:
logical_backup_cronjob_environment_secret:
type: string
logical_backup_docker_image:
default: ghcr.io/zalando/postgres-operator/logical-backup:v1.15.1
default: ghcr.io/zalando/postgres-operator/logical-backup:v2.0.0
type: string
logical_backup_failed_jobs_history_limit:
default: 3
Expand Down
58 changes: 29 additions & 29 deletions charts/postgres-operator/index.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,31 @@
apiVersion: v1
entries:
postgres-operator:
- apiVersion: v2
appVersion: 2.0.0
created: "2026-07-27T16:59:31.277476+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: 488ae36a71c075ebee4b759f52db31029d559cab20efb329cf151f206087deaf
home: https://github.com/zalando/postgres-operator
keywords:
- postgres
- operator
- cloud-native
- patroni
- spilo
maintainers:
- email: opensource@zalando.de
name: Zalando
name: postgres-operator
sources:
- https://github.com/zalando/postgres-operator
urls:
- postgres-operator-2.0.0.tgz
version: 2.0.0
- apiVersion: v2
appVersion: 1.15.1
created: "2025-12-17T14:48:33.832345061+01:00"
created: "2026-07-27T16:59:31.276117+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: 9f3edc3d796105c02c04eaae28a78e58fb08c1847a9de012245fd6ac2c0d2c00
Expand All @@ -25,7 +47,7 @@ entries:
version: 1.15.1
- apiVersion: v2
appVersion: 1.15.0
created: "2025-12-17T14:48:33.826117296+01:00"
created: "2026-07-27T16:59:31.275355+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: 002dd47647bf51fbba023bd1762d807be478cf37de7a44b80cd01ac1f20bd94a
Expand All @@ -47,7 +69,7 @@ entries:
version: 1.15.0
- apiVersion: v2
appVersion: 1.14.0
created: "2025-12-17T14:48:33.819729144+01:00"
created: "2026-07-27T16:59:31.274572+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: 36e1571f3f455b213f16cdda7b1158648e8e84deb804ba47ed6b9b6d19263ba8
Expand All @@ -69,7 +91,7 @@ entries:
version: 1.14.0
- apiVersion: v2
appVersion: 1.13.0
created: "2025-12-17T14:48:33.81038602+01:00"
created: "2026-07-27T16:59:31.273293+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: a839601689aea0a7e6bc0712a5244d435683cf3314c95794097ff08540e1dfef
Expand All @@ -91,7 +113,7 @@ entries:
version: 1.13.0
- apiVersion: v2
appVersion: 1.12.2
created: "2025-12-17T14:48:33.803256825+01:00"
created: "2026-07-27T16:59:31.272505+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: 65858d14a40d7fd90c32bd9fc60021acc9555c161079f43a365c70171eaf21d8
Expand All @@ -113,7 +135,7 @@ entries:
version: 1.12.2
- apiVersion: v2
appVersion: 1.11.0
created: "2025-12-17T14:48:33.797369053+01:00"
created: "2026-07-27T16:59:31.271511+02:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: 3914b5e117bda0834f05c9207f007e2ac372864cf6e86dcc2e1362bbe46c14d9
Expand All @@ -133,26 +155,4 @@ entries:
urls:
- postgres-operator-1.11.0.tgz
version: 1.11.0
- apiVersion: v2
appVersion: 1.10.1
created: "2025-12-17T14:48:33.791368349+01:00"
description: Postgres Operator creates and manages PostgreSQL clusters running
in Kubernetes
digest: cc3baa41753da92466223d0b334df27e79c882296577b404a8e9071411fcf19c
home: https://github.com/zalando/postgres-operator
keywords:
- postgres
- operator
- cloud-native
- patroni
- spilo
maintainers:
- email: opensource@zalando.de
name: Zalando
name: postgres-operator
sources:
- https://github.com/zalando/postgres-operator
urls:
- postgres-operator-1.10.1.tgz
version: 1.10.1
generated: "2025-12-17T14:48:33.785159183+01:00"
generated: "2026-07-27T16:59:31.270324+02:00"
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions charts/postgres-operator/values.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
image:
registry: ghcr.io
repository: zalando/postgres-operator
tag: v1.15.1
tag: v2.0.0
pullPolicy: "IfNotPresent"

# Optionally specify an array of imagePullSecrets.
Expand Down Expand Up @@ -41,7 +41,7 @@ configGeneral:
# etcd connection string for Patroni. Empty uses K8s-native DCS.
etcd_host: ""
# Spilo docker image
docker_image: ghcr.io/zalando/spilo-18:4.1-p1
docker_image: ghcr.io/zalando/spilo-18:4.1-p2

# key name for annotation to ignore globally configured instance limits
# ignore_instance_limits_annotation_key: ""
Expand Down Expand Up @@ -385,7 +385,7 @@ configLogicalBackup:
# logical_backup_memory_request: ""

# image for pods of the logical backup job (example runs pg_dumpall)
logical_backup_docker_image: "ghcr.io/zalando/postgres-operator/logical-backup:v1.15.1"
logical_backup_docker_image: "ghcr.io/zalando/postgres-operator/logical-backup:v2.0.0"
# path of google cloud service account json file
# logical_backup_google_application_credentials: ""

Expand Down
19 changes: 11 additions & 8 deletions docs/administrator.md
Original file line number Diff line number Diff line change
Expand Up @@ -734,9 +734,9 @@ that cannot be overridden to guarantee core functionality. Only variables with
shipping to be specified differently. There are three ways to specify extra
environment variables (or override existing ones) for database pods:

* [Via ConfigMap](#via-configmap)
* [Via Secret](#via-secret)
* [Via Postgres Cluster Manifest](#via-postgres-cluster-manifest)
* [Globally via ConfigMap](#via-configmap)
* [Globally via Secret](#via-secret)
* [Locally via Postgres Cluster Manifest](#via-postgres-cluster-manifest)

The first two options must be referenced from the operator configuration
making them global settings for all Postgres cluster the operator watches.
Expand All @@ -745,10 +745,10 @@ environment variables. Another case could be to provide custom cloud
provider or backup settings.

The last options allows for specifying environment variables individual to
every cluster via the `env` section in the manifest. For example, if you use
individual backup locations for each of your clusters. Or you want to disable
WAL archiving for a certain cluster by setting `WAL_S3_BUCKET`, `WAL_GS_BUCKET`
or `AZURE_STORAGE_ACCOUNT` to an empty string.
every cluster via the `env` or `envFrom` section in the manifest. For example,
if you use individual backup locations for each of your clusters. Or you want
to disable WAL archiving for a certain cluster by setting `WAL_S3_BUCKET`,
`WAL_GS_BUCKET` or `AZURE_STORAGE_ACCOUNT` to an empty string.

The operator will give precedence to environment variables in the following
order (e.g. a variable defined in 4. overrides a variable with the same name
Expand All @@ -762,6 +762,9 @@ in 5.):
6. Pod environment config map via operator config
7. WAL and logical backup settings from operator config

The `envFrom` section is treated separately and allows for a very flexible
local configuration referencing a ConfigMap or a Secret.

### Via ConfigMap

The ConfigMap with the additional settings is referenced in the operator's
Expand Down Expand Up @@ -1574,7 +1577,7 @@ make docker

# build in image in minikube docker env
eval $(minikube docker-env)
docker buildx build --load -t ghcr.io/zalando/postgres-operator-ui:v1.15.1 .
docker buildx build --load -t ghcr.io/zalando/postgres-operator-ui:v2.0.0 .

# apply UI manifests next to a running Postgres Operator
kubectl apply -f manifests/
Expand Down
Binary file removed docs/diagrams/operator.png
Binary file not shown.
Loading