The Postgres operator manages PostgreSQL clusters on Kubernetes:
-
The operator watches additions, updates, and deletions of PostgreSQL cluster manifests and changes the running clusters accordingly. For example, when a user submits a new manifest, the operator spawns a new Postgres cluster with necessary entities such as StatefulSets, Services, and also Postgres roles. See this Postgres cluster manifest for settings that a manifest may contain.
-
The operator also watches updates to its own configuration and alters running Postgres clusters if necessary. For instance, if a pod Docker image is changed, the operator carries out the rolling update. That is, the operator re-spawns one-by-one pods of each StatefulSet it manages with the new Docker image.
-
Finally, the operator periodically synchronizes the actual state of each Postgres cluster with the desired state defined in the cluster's manifest.
-
The operator aims to be hands free and configuration happens only via manifests and its own config. This enables easy integration in automated deploy pipelines with no access to Kubernetes directly.
For a quick first impression follow the instructions of this tutorial.
The Postgres Operator made it to the Google Summer of Code 2019! As a brand new mentoring organization, we are now looking for our first mentees. Check our ideas and start discussion in the issue tracker. And don't forget to spread a word about our GSoC participation to attract even more students.
- concepts
- user documentation
- administrator documentation
- developer documentation
- operator configuration reference
- cluster manifest reference
- command-line options and environment variables
The rest of this document is a tutorial to get you up and running locally with the operator on Minikube.
Here is a diagram, that summarizes what would be created by the operator, when a new Postgres cluster CRD is submitted:
This picture is not complete without an overview of what is inside a single cluster pod, so let's zoom in:
These two diagrams should help you to understand the basics of what kind of functionality the operator provides.
There is a browser-friendly version of this documentation at postgres-operator.readthedocs.io
There are two places to get in touch with the community:
- The GitHub issue tracker
- The #postgres-operator slack channel under Postgres Slack