Still in BETA, use with care.
A Kubernetes operator for Postgresql clusters managed by Patroni. Can do major Postgresql version upgrades without significant downtime.
Uses postgres-patroni images, which supports Postgresql versions 13 and 15 only.
To quickly deploy the operator, run:
$ kubectl apply -f https://raw.githubusercontent.com/k-web-s/patroni-postgres-operator/refs/heads/main/config/deploy.yaml
The following minimal object creates a PatroniPostgres instance with one node:
apiVersion: kwebs.cloud/v1alpha1
kind: PatroniPostgres
metadata:
name: patroni-postgres
spec:
version: 15
volumeSize: 5Gi
nodes:
- storageClassName: default
The number of node
definitions specifies the cluster size. At least each node definition must have a storageClassName
attribute. See full reference. The operator will create a service with the same name as the object, which can be used to access the patronipostgres cluster. No users/databases are created. Superuser credentials are stored in a secret with the same name as the object. Superuser username is postgres
, and the password can be obtained by:
$ kubectl --context=pi-kubernetes -n db get secret patroni-postgres --template '{{index .data "superuser-password"}}' | base64 -d
Check more samples.
Adding new nodes is just as easy as extending nodes
array. Removing also works, howewer, only removing nodes from the end of the array is supported. Changing a storageClassName
in a node definition is not supported.