Cloud Native PostgreSQL

Cloud Native PostgreSQL is an operator designed by EnterpriseDB to manage PostgreSQL workloads on any supported Kubernetes cluster running in private, public, or hybrid cloud environments. Cloud Native PostgreSQL adheres to DevOps principles and concepts such as declarative configuration and immutable infrastructure.

It defines a new Kubernetes resource called "Cluster" representing a PostgreSQL cluster made up of a single primary and an optional number of replicas that co-exist in a chosen Kubernetes namespace for High Availability and offloading of read-only queries.

Applications that reside in the same Kubernetes cluster can access the PostgreSQL database using a service which is solely managed by the operator, without having to worry about changes of the primary role following a failover or a switchover. Applications that reside outside the Kubernetes cluster, need to configure an Ingress object to expose the service via TCP.

Cloud Native PostgreSQL works with PostgreSQL and EDB Postgres Advanced and is available under the EnterpriseDB Limited Use License.

You can evaluate Cloud Native PostgreSQL for free. You need a valid license key to use Cloud Native PostgreSQL in production.

Important

Currently, based on the Operator Capability Levels model, users can expect a "Level III - Full Lifecycle" set of capabilities from the Cloud Native PostgreSQL Operator.

Requirements

Cloud Native PostgreSQL requires Kubernetes 1.16 or higher, tested on AWS, Google, Azure (with multiple availability zones).

Cloud Native PostgreSQL has also been certified for RedHat OpenShift Container Platform (OCP) 4.5+ and is available directly from the RedHat Catalog. OpenShift Container Platform is an open-source distribution of Kubernetes which is maintained and commercially supported by Red Hat.

Supported PostgreSQL versions

PostgreSQL and EDB Postgres Advanced 13, 12, 11 and 10 are currently supported.

Main features

  • Direct integration with Kubernetes API server for High Availability, without requiring an external tool
  • Self-Healing capability, through:
    • failover of the primary instance by promoting the most aligned replica
    • automated recreation of a replica
  • Planned switchover of the primary instance by promoting a selected replica
  • Scale up/down capabilities
  • Definition of an arbitrary number of instances (minimum 1 - one primary server)
  • Definition of the read-write service, to connect your applications to the only primary server of the cluster
  • Definition of the read-only service, to connect your applications to any of the instances for reading workloads
  • Support for Local Persistent Volumes with PVC templates
  • Reuse of Persistent Volumes storage in Pods
  • Rolling updates for PostgreSQL minor versions and operator upgrades
  • TLS connections and client certificate authentication
  • Continuous backup to an S3 compatible object store
  • Full recovery and Point-In-Time recovery from an S3 compatible object store backup
  • Support for Synchronous Replicas
  • Support for node affinity via nodeSelector
  • Native customizable exporter of user defined metrics for Prometheus through the metrics port (9187)
  • Standard output logging of PostgreSQL error messages in JSON format
  • Support for the restricted security context constraint (SCC) in Red Hat OpenShift
  • cnp plugin for kubectl

About this guide

Follow the instructions in the "Quickstart" to test Cloud Native PostgreSQL on a local Kubernetes cluster using Minikube or Kind.

In case you are not familiar with some basic terminology on Kubernetes and PostgreSQL, please consult the "Before you start" section.

Note

Although the guide primarily addresses Kubernetes, all concepts can be extended to OpenShift as well.