Cloud Native PostgreSQL

Cloud Native PostgreSQL is an operator designed by EDB to manage PostgreSQL workloads on any supported Kubernetes cluster running in private, public, hybrid, or multi-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 a Service or Ingress object to expose the Postgres via TCP. Web applications can take advantage of the native connection pooler based on PgBouncer.

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

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

Note

Based on the Operator Capability Levels model, users can expect a "Level V - Auto Pilot" set of capabilities from the Cloud Native PostgreSQL Operator.

Supported Kubernetes distributions

Cloud Native PostgreSQL requires Kubernetes 1.19 or higher.

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

Important

Please take into account that some delay may occur when releasing Cloud Native PostgreSQL on Red Hat's OpenShift Container Platform, as the process is not entirely under our control.

Please refer to the "Platform Compatibility" page from the EDB website for a list of the currently supported Kubernetes distributions.

Multiple architectures

The Cloud Native PostgreSQL Operator container images support the multi-arch format for the following platforms: linux/amd64, linux/ppc64le, linux/s390x.

Warning

Cloud Native PostgreSQL requires that all nodes in a Kubernetes cluster have the same CPU architecture, thus a hybrid CPU architecture Kubernetes cluster is not supported. Additionally, EDB supports linux/ppc64le and linux/s390x architectures on OpenShift only.

Supported Postgres versions

The following versions of Postgres are currently supported:

  • PostgreSQL 14 (default), 13, 12, 11, and 10
  • EDB Postgres Advanced 14, 13, 12, 11, and 10

All of the above versions, except PostgreSQL/EPAS 10, are available on the following platforms: linux/amd64, linux/ppc64le, linux/s390x. PostgreSQL and EPAS 10 is available on linux/amd64 only. EDB supports operand images for linux/ppc64le and linux/s390x architectures on OpenShift only.

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
  • Declarative management of PostgreSQL configuration, including certain popular Postgres extensions through the cluster spec: pg_audit, auto_explain, and pg_stat_statements
  • Support for Local Persistent Volumes with PVC templates
  • Reuse of Persistent Volumes storage in Pods
  • Rolling updates for PostgreSQL minor versions
  • In-place or rolling updates for operator upgrades
  • TLS connections and client certificate authentication
  • Support for custom TLS certificates (including integration with cert-manager)
  • Continuous backup to an object store (AWS S3 and S3-compatible, Azure Blob Storage, and Google Cloud Storage)
  • Backup retention policies (based on recovery window)
  • Full recovery and Point-In-Time recovery from an existing backup in an object store
  • Parallel WAL archiving and restore to allow the database to keep up with WAL generation on high write systems
  • Support tagging backup files uploaded to an object store to enable optional retention management at the object store layer Replica clusters for
  • PostgreSQL deployments across multiple Kubernetes clusters, enabling private, public, hybrid, and multi-cloud architectures
  • Support for Synchronous Replicas
  • Connection pooling with PgBouncer
  • 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
  • Automatically set readOnlyRootFilesystem security context for pods
  • cnp plugin for kubectl
  • Fencing of an entire PostgreSQL cluster, or a subset of the instances
  • Simple bind and search+bind LDAP client authentication
  • Multi-arch format container images

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.

Postgres, PostgreSQL and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada, and used with their permission.