• Stars
    star
    3,916
  • Rank 11,165 (Top 0.3 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Production PostgreSQL for Kubernetes, from high availability Postgres clusters to full-scale database-as-a-service.

PGO: The Postgres Operator from Crunchy Data

PGO: The Postgres Operator from Crunchy Data

Go Report Card

Production Postgres Made Easy

PGO, the Postgres Operator from Crunchy Data, gives you a declarative Postgres solution that automatically manages your PostgreSQL clusters.

Designed for your GitOps workflows, it is easy to get started with Postgres on Kubernetes with PGO. Within a few moments, you can have a production-grade Postgres cluster complete with high availability, disaster recovery, and monitoring, all over secure TLS communications. Even better, PGO lets you easily customize your Postgres cluster to tailor it to your workload!

With conveniences like cloning Postgres clusters to using rolling updates to roll out disruptive changes with minimal downtime, PGO is ready to support your Postgres data at every stage of your release pipeline. Built for resiliency and uptime, PGO will keep your Postgres cluster in its desired state, so you do not need to worry about it.

PGO is developed with many years of production experience in automating Postgres management on Kubernetes, providing a seamless cloud native Postgres solution to keep your data always available.

Installation

We recommend following our Quickstart for how to install and get up and running with PGO, the Postgres Operator from Crunchy Data. However, if you can't wait to try it out, here are some instructions to get Postgres up and running on Kubernetes:

  1. Fork the Postgres Operator examples repository and clone it to your host machine. For example:
YOUR_GITHUB_UN="<your GitHub username>"
git clone --depth 1 "[email protected]:${YOUR_GITHUB_UN}/postgres-operator-examples.git"
cd postgres-operator-examples
  1. Run the following commands
kubectl apply -k kustomize/install/namespace
kubectl apply --server-side -k kustomize/install/default

For more information please read the Quickstart and Tutorial.

Cloud Native Postgres for Kubernetes

PGO, the Postgres Operator from Crunchy Data, comes with all of the features you need for a complete cloud native Postgres experience on Kubernetes!

PostgreSQL Cluster Provisioning

Create, Scale, & Delete PostgreSQL clusters with ease, while fully customizing your Pods and PostgreSQL configuration!

High Availability

Safe, automated failover backed by a distributed consensus high availability solution. Uses Pod Anti-Affinity to help resiliency; you can configure how aggressive this can be! Failed primaries automatically heal, allowing for faster recovery time.

Support for standby PostgreSQL clusters that work both within and across multiple Kubernetes clusters.

Disaster Recovery

Backups and restores leverage the open source pgBackRest utility and includes support for full, incremental, and differential backups as well as efficient delta restores. Set how long you to retain your backups. Works great with very large databases!

Security and TLS

PGO enforces that all connections are over TLS. You can also bring your own TLS infrastructure if you do not want to use the defaults provided by PGO.

PGO runs containers with locked-down settings and provides Postgres credentials in a secure, convenient way for connecting your applications to your data.

Monitoring

Track the health of your PostgreSQL clusters using the open source pgMonitor library.

Upgrade Management

Safely apply PostgreSQL updates with minimal impact to the availability of your PostgreSQL clusters.

Advanced Replication Support

Choose between asynchronous and synchronous replication for workloads that are sensitive to losing transactions.

Clone

Create new clusters from your existing clusters or backups with efficient data cloning.

Connection Pooling

Advanced connection pooling support using pgBouncer.

Pod Anti-Affinity, Node Affinity, Pod Tolerations

Have your PostgreSQL clusters deployed to Kubernetes Nodes of your preference. Set your pod anti-affinity, node affinity, Pod tolerations, and more rules to customize your deployment topology!

Scheduled Backups

Choose the type of backup (full, incremental, differential) and how frequently you want it to occur on each PostgreSQL cluster.

Backup to Local Storage, S3, GCS, Azure, or a Combo!

Store your backups in Amazon S3 or any object storage system that supports the S3 protocol. You can also store backups in Google Cloud Storage and Azure Blob Storage.

You can also mix-and-match: PGO lets you store backups in multiple locations.

Full Customizability

PGO makes it easy to fully customize your Postgres cluster to tailor to your workload:

Namespaces

Deploy PGO to watch Postgres clusters in all of your namespaces, or restrict which namespaces you want PGO to manage Postgres clusters in!

Included Components

PostgreSQL containers deployed with the PostgreSQL Operator include the following components:

In addition to the above, the geospatially enhanced PostgreSQL + PostGIS container adds the following components:

PostgreSQL Operator Monitoring uses the following components:

For more information about which versions of the PostgreSQL Operator include which components, please visit the compatibility section of the documentation.

Supported Platforms

PGO, the Postgres Operator from Crunchy Data, is tested on the following platforms:

  • Kubernetes 1.24-1.27
  • OpenShift 4.10-4.13
  • Rancher
  • Google Kubernetes Engine (GKE), including Anthos
  • Amazon EKS
  • Microsoft AKS
  • VMware Tanzu

This list only includes the platforms that the Postgres Operator is specifically tested on as part of the release process: PGO works on other Kubernetes distributions as well.

Contributing to the Project

Want to contribute to the PostgreSQL Operator project? Great! We've put together a set of contributing guidelines that you can review here:

Once you are ready to submit a Pull Request, please ensure you do the following:

  1. Reviewing the contributing guidelines and ensure your that you have followed the commit message format, added testing where appropriate, documented your changes, etc.
  2. Open up a pull request based upon the guidelines. If you are adding a new feature, please open up the pull request on the master branch.
  3. Please be as descriptive in your pull request as possible. If you are referencing an issue, please be sure to include the issue in your pull request

Support

If you believe you have found a bug or have a detailed feature request, please open a GitHub issue and follow the guidelines for submitting a bug.

For general questions or community support, we welcome you to join our community Discord or the PGO project community mailing list and ask your questions there.

For other information, please visit the Support section of the documentation.

Documentation

For additional information regarding the design, configuration, and operation of the PostgreSQL Operator, pleases see the Official Project Documentation.

Past Versions

Documentation for previous releases can be found at the Crunchy Data Access Portal.

Releases

When a PostgreSQL Operator general availability (GA) release occurs, the container images are distributed on the following platforms in order:

The image rollout can occur over the course of several days.

To stay up-to-date on when releases are made available in the Crunchy Data Developer Portal, please sign up for the Crunchy Data Developer Program Newsletter. You can also join the PGO project community mailing list

The PGO Postgres Operator project source code is available subject to the Apache 2.0 license with the PGO logo and branding assets covered by our trademark guidelines.

More Repositories

1

crunchy-containers

Containers for Managing PostgreSQL on Kubernetes by Crunchy Data
Shell
1,011
star
2

pg_tileserv

A very thin PostGIS-only tile server in Go. Takes in HTTP tile requests, executes SQL, returns MVT tiles.
Go
858
star
3

pgmonitor

PostgreSQL Monitoring, Metrics Collection and Alerting Resources from Crunchy Data
PLpgSQL
568
star
4

pg_featureserv

Lightweight RESTful Geospatial Feature Server for PostGIS in Go
Go
451
star
5

crunchy-proxy

PostgreSQL Connection Proxy by Crunchy Data (beta)
Go
414
star
6

pg_parquet

Copy to/from Parquet in S3 from within PostgreSQL
Rust
248
star
7

pg_eventserv

Small golang server to push PgSQL listen/notify events into websockets
Go
200
star
8

postgres-operator-examples

Examples for deploying applications with PGO, the Postgres Operator from Crunchy Data
Handlebars
184
star
9

pgCompare

pgCompare – a straightforward utility crafted to simplify the data comparison process, providing a robust solution for comparing data across various database platforms.
Java
79
star
10

postgresql-prometheus-adapter

Remote storage adapter enabling Prometheus to use PostgreSQL as a long-term store for time-series metrics.
Go
75
star
11

Postgres-AI-Tutorial

Python
58
star
12

pgnodemx

A PostgreSQL extension that provides SQL functions to allow capture of node OS metrics via SQL queries.
C
47
star
13

pgstigcheck-inspec

PostgreSQL STIG Compliance Testing Solution using InSpec
Ruby
41
star
14

crunchy-postgresql-manager

PostgreSQL-as-a-Service Management Utility. Superseded by Crunchy Container Suite: https://github.com/CrunchyData/crunchy-containers
HTML
36
star
15

pgbouncer_fdw

PostgreSQL Foreign Data Wrapper to Connect to pgbouncer
PLpgSQL
32
star
16

crunchy_check_access

Functions and views to facilitate PostgreSQL object access inspection
PLpgSQL
28
star
17

bridge-cli

CLI for Crunchy Bridge
Crystal
23
star
18

postgres-operator-client

Go
14
star
19

pgo-osb

Open Service Broker Implementation Based on the Crunchy PostgreSQL Operator
Go
13
star
20

crunchy-demo-data

Demo Data that is used in Crunchy Data Demos and Workshop that can be freely redistributed
HTML
13
star
21

crunchy-katacoda

Shell
10
star
22

openshift-postgres-cartridge

OpenShift V2 PG cartridge
Shell
8
star
23

backup-scripts

High Performance PostgreSQL Tools
Shell
8
star
24

crunchy-watch

A PostgreSQL Automated Failover Container
Go
8
star
25

pgSimload

pgSimload, a versatile CLI tool to create activity on PostgreSQL server(s) and/or test HA in Crunchy Postgres or Crunchy Postgres for Kubernetes
Go
7
star
26

terraform-provider-crunchybridge

Go
6
star
27

exporter2perfdata

Go
5
star
28

pgseccomp

C
5
star
29

crunchy-bridge-for-analytics-examples

Crunchy Bridge for Analytics Examples repository
PLpgSQL
4
star
30

pg_goggles

pg_goggles provides better scaled and summarized views into PostgreSQL's cryptic internal counters.
4
star
31

openshift-postgres-rls-cartridge

Shell
3
star
32

nixpkgs

Nix
3
star
33

crunchy-bridge-operator

Go
3
star
34

crunchy-hugo-theme

Theme used for Crunchy Data generated documentation
JavaScript
3
star
35

skybridge2

Go
2
star
36

postgres-ci-cd-demo

Python
2
star
37

os-pg-testing

Shell
1
star
38

postgres-realtime-demo

Python
1
star
39

pgmonitor-extension

PLpgSQL
1
star
40

spatial-suite-rest-demo

Python
1
star
41

crystal-keyring

Keyring implementation for Crystal
Crystal
1
star
42

crunchy-docs

TypeScript
1
star
43

doc-content-guide

1
star
44

crunchy-postgresql-manager-openshift

CPM Openshift version
HTML
1
star
45

homebrew-brew

homebrew tap
Ruby
1
star
46

spatial-suite-demo-webapp

JavaScript
1
star