Skip to main content
PGO, the Postgres Operator from Crunchy Data, gives you a declarative Postgres solution that automatically manages your PostgreSQL clusters on Kubernetes. Designed for GitOps workflows, PGO lets you provision a production-grade cluster — complete with high availability, disaster recovery, TLS encryption, and monitoring — by applying a single PostgresCluster custom resource. PGO then continuously reconciles the cluster, keeping it in your declared desired state so you never have to manually intervene.

Quickstart

Deploy your first PostgreSQL cluster on Kubernetes in minutes using Kustomize.

Architecture

Learn how the operator pattern, Patroni, pgBackRest, and pgBouncer work together.

Create a cluster

Provision and fully customize a PostgresCluster for your workload.

Custom resource reference

Full field-level reference for the PostgresCluster, PGUpgrade, and PGAdmin CRDs.

What PGO provides

PGO automates the day-one and day-two operations that are difficult to get right when running PostgreSQL on Kubernetes manually.

High availability

Automated failover using Patroni’s distributed consensus. Failed primaries self-heal. Configure synchronous or asynchronous replication, and deploy standby clusters within or across Kubernetes environments.

Backups and disaster recovery

Full, incremental, and differential backups via pgBackRest. Store backups on S3-compatible object storage, Google Cloud Storage, Azure Blob Storage, or local volumes — simultaneously across multiple repositories.

Connection pooling

Built-in pgBouncer integration manages database connections efficiently, reducing overhead for applications that open many short-lived connections.

Monitoring

Out-of-the-box Prometheus metrics, Grafana dashboards, and Alertmanager rules using the pgMonitor library. Add custom queries or export via OpenTelemetry.

TLS everywhere

PGO enforces TLS on all connections by default, including replication traffic. Use PGO-managed PKI or supply your own certificates via customTLSSecret.

Cluster customization

Set container resources, storage sizes, node affinity, pod tolerations, topology spread constraints, custom PostgreSQL parameters, and init SQL — all in the PostgresCluster spec.

Major version upgrades

Perform in-place major PostgreSQL version upgrades using the PGUpgrade custom resource with minimal downtime.

pgAdmin web UI

Optionally deploy pgAdmin 4 alongside your cluster for a browser-based management interface, configured through the userInterface field or the standalone PGAdmin resource.

Included components

Every PostgreSQL cluster deployed by PGO includes the following open source components: The PostgreSQL container also ships with contrib modules, PL/Python, PL/Perl, PL/Tcl, pgAudit, pg_cron, pg_partman, wal2json, TimescaleDB (Apache edition), and LLVM JIT support. A separate PostGIS-enabled image adds PostGIS and pgRouting.
For the full list of which component versions ship with each PGO release, see the components reference.

Supported Kubernetes platforms

PGO is tested and supported on the following distributions:
  • Kubernetes
  • Red Hat OpenShift
  • Rancher
  • Google Kubernetes Engine (GKE), including Anthos
  • Amazon EKS
  • Microsoft AKS
  • VMware Tanzu
PGO automatically detects OpenShift environments and adjusts pod security context settings accordingly. See supported platforms for version compatibility details.

Installation

PGO is distributed as part of Crunchy Postgres for Kubernetes and can be installed using Kustomize or Helm.

Install with Kustomize

The recommended path for most users. Fork the examples repository and apply two commands.

Install with Helm

Deploy PGO using the official Helm chart for environments that prefer Helm-based workflows.