Kubegres

Kubegres is a Kubernetes operator allowing to deploy one or many clusters of PostgreSql instances with data replication and failover enabled out-of-the box. It brings simplicity when using PostgreSql considering how complex managing stateful-set's life-cycle and data replication could be with Kubernetes.

Kubegres is open source and available on GitHub.

Sponsor

Kubegres is sponsored by Etikbee which is using Kubegres in production with over 25 clusters of Postgres. Etikbee is a UK based marketplace which promotes reuse by allowing merchants to list their products for rent, for sale and advertise services such as product repair.

Features

  • It can manage one or many clusters of Postgres instances. Each cluster of Postgres instances is created using a YAML of "kind: Kubegres". Each cluster is self-contained and is identified by its unique name and namespace.
  • It creates a cluster of PostgreSql servers with Streaming Replication enabled: it creates a Primary PostgreSql pod and a number of Replica PostgreSql pods and replicates primary's database in real-time to Replica pods.
  • It manages failover: if a Primary PostgreSql crashes, it automatically promotes a Replica PostgreSql as a Primary.
  • It has a data backup option allowing to dump PostgreSql data regularly in a given volume.
  • It provides a very simple YAML with properties specialised for PostgreSql.
  • It is resilient, has over 93 automatized tests cases and has been running in production.
  • It works with the PostgreSql containers created by the Docker Official Images team (version 12.4 or higher). Kubegres uses the standard PostgreSql libraries to manage replication and failover and it does not require a custom Docker image with a set of third party libraries.
  • It is portable because compatible with any Docker images which derive from the PostgreSql containers.

Please click here to get started

How does Kubegres differentiate itself?

Kubegres is fully integrated with Kubernetes' lifecycle as it runs as an operator written in Go. It is minimalist in terms of codebase compared to other open-source Postgres operators. It has the minimal and yet robust required features to manage a cluster of PostgreSql on Kubernetes. We aim keeping this project small and simple.

Among many reasons, there are 5 main ones why we recommend Kubegres:

  • Standard: to manage replications, failover and backup, Kubegres is 100% relying on the PostgreSql standard libraries bundled in the PostgreSql containers. It does not ship with any custom or third party libraries to manage those features.
  • Small learning curve: if you are already familiar with the standard PostgreSql libraries, you can understand and admin Kubegres easily.
  • Secure: all other open source projects that we have evaluated do require their own custom Docker containers which ship with custom libraries. And in order to reduce the attack surface caused by additional dependencies, we have decided to only depend on the PostgreSql containers created and maintained by the Docker Official Images team.
  • Portable: the approach above allows Kubegres to be compatible with any containers which derive from those PostgreSql containers.
  • Pure Go: Kubegres was entirely written in Go and no additional languages were used (e.g. Python, ...). And it uses the latest Kubebuilder version 3 which is maintained by the official Kubernetes API Machinery Special Interest Group (SIG).

Please click here to get started

Tell me more

Kubegres was developed by Reactive Tech Limited and Alex Arica as the lead developer. Reactive Tech offers support services for Kubegres, Kubernetes and PostgreSql.

It was developed with the framework Kubebuilder version 3, an SDK for building Kubernetes APIs using CRDs. Kubebuilder is maintained by the official Kubernetes API Machinery Special Interest Group (SIG).

Please click here to get started

News

A webinar about Kubegres was hosted by PostgresConf.
Watch the recorded video.

21 March 2024: Release of Kubegres version 1.18

26 October 2023: Release of Kubegres version 1.17

20 September 2022: Release of Kubegres version 1.16

17 December 2021: Release of Kubegres version 1.15

7 December 2021: Release of Kubegres version 1.14

3 November 2021: Release of Kubegres version 1.13

6 October 2021: Release of Kubegres version 1.12

1 October 2021: Release of Kubegres version 1.11

22 September 2021: Release of Kubegres version 1.10

17 August 2021: Release of Kubegres version 1.9

23 July 2021: Release of Kubegres version 1.8

11 June 2021: Release of Kubegres version 1.7

9 June 2021: Release of Kubegres version 1.6

30 May 2021: Release of Kubegres version 1.5

28 May 2021: Release of Kubegres version 1.4

25 May 2021: Release of Kubegres version 1.3

17 May 2021: Release of Kubegres version 1.2

21 April 2021: The availability of Kubegres was published on PostgreSql's official website

20 April 2021: Release of Kubegres version 1.1

15 April 2021: Google talked about Kubegres in their Kubernetes Podcast #146

10 April 2021: Release of Kubegres version 1.0