1 of 20

CloudNativePG: PostgreSQL on Kubernetes the right way

Vojtěch Mareš, KCD Prague 2024

2 of 20

Vojtěch Mareš

DevOps konzultant, lektor & Cybroslabs���X @vojtechmares_ | GitHub @vojtechmares | www.vojtechmares.com

3 of 20

Agenda

  • Požadavky na DB
  • Stavové aplikace na Kubernetes
  • Databáze na Kubernetes
  • PostgreSQL na Kubernetes
  • Nejen databáze
  • CloudNativePG

4 of 20

Co od databáze chceme

  • Vysokou dostupnost (HA)
  • Automatický failover
  • Zálohy (a případně snadnou obnovu ze zálohy)
  • Point In Time Recovery
  • Automatizaci clusteru
    • Setup
    • Backup
    • Replikace
    • Failover

5 of 20

Stavové aplikace na Kubernetes

  • Například
    • Databáze (relační, NoSQL, KV,...)
    • Message broker (RabbitMQ, Kafka,…)
  • StatefulSet
  • Neřeší kdo je primary/leader

6 of 20

Databáze na Kubernetes

  • StatefulSet
    • Neřeší primary/leadera
    • Jeden StatefulSet nebo víc?
    • “Koordinator” jako sidecar?
    • ”Koordinator” bokem?
  • Operator

7 of 20

PostgreSQL na Kubernetes

  • StatefulSet
  • Helm Chart (Bitnami?)
  • Zalando Operator (Patroni 😮‍💨)
  • CunchyData (licence 👎)
  • CloudNativePG ❤️

8 of 20

Databází to nekončí

  • Connection pooler
    • Pgpool
    • pgBouncer
    • HAProxy

9 of 20

CloudNativePG

cloudnative-pg.io

10 of 20

Co je CNPG?

  • Open-source od EnterpriseDB (PostgreSQL specialisti)
  • Kubernetes Operator
    • Level 5 (autopilot)
  • 3,6k ⭐️

11 of 20

Postgres cluster

  • Manifest (CRD)
  • Podpora Secrets
  • PostgreSQL parametry
  • 3 Kubernetes Services
    • Read-Write
    • Read-Only
    • Replicas

12 of 20

Předpřipravená databáze

  • initdb
  • Databáze
    • Owner
    • User (Secret)
  • Nebo…
    • Databáze ze zálohy
    • Databáze/cluster z jiného clusteru

13 of 20

Zálohy a WAL archivace

  • Zálohy do object storage (S3/GCS/ASB)
  • Zálohy Kubernetes volumů (Velero)
  • Archivace WALů Point In Time Recovery
  • Automatické zálohy (ScheduledBackup)
  • On-demand záloha

14 of 20

Cluster ze zálohy

  • Obnovení zálohy
  • Prostředí pro každou feature větev v Gitu

15 of 20

Replikace a repliky

  • Nativní Postgres replikace
    • Streaming replikace (sync/async)
  • 2 druhy replik
    • Synchroní (read-only traffic nebo failover)
    • Asynchroní (Write performance)
  • Replikační sloty
    • Vyhrazená spojení pro replikace, ”rezervace”
  • Podpora Kubernetes affinity

16 of 20

pgBouncer

17 of 20

Replika cluster

18 of 20

Monitoring

19 of 20

kubectl plugin

20 of 20

Otázky? 🙋