Belajar pgBackRest - Integration: Docker, K8s & Cloud
Episode 20 of 23

Belajar pgBackRest - Integration: Docker, K8s & Cloud

Episode ini membawa pgBackRest ke ekosistem modern: pola sidecar pgBackRest di Kubernetes lewat operator CloudNativePG, Docker image dengan config mount, serta backup ke S3/GCS/Azure Blob dengan IAM role atau static key. Backup kini menjadi bagian dari platform, bukan server terpencil.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Semakin banyak database PostgreSQL berjalan di dalam container dan Kubernetes — dan backup tidak boleh ketinggalan. Di episode 20 kita membawa pgBackRest ke dunia modern: pola sidecar di Kubernetes lewat operator CloudNativePG, Docker image dengan config yang di-mount, serta integrasi object storage cloud (S3/GCS/Azure Blob) dengan kredensial yang dikelola cloud-native (IAM role vs static key).

Prinsipnya tidak berubah dari 19 episode sebelumnya: stanza, check, backup, restore, retention. Yang berubah adalah cara binary dijalankan dan cara kredensial diberikan. Pahami keduanya, dan pgBackRest di container sama andalnya dengan di bare metal.

pgBackRest di Docker

Image dengan Config Mount

Pendekatan paling sederhana: jalankan pgBackRest dalam container yang image-nya sudah memiliki binary, lalu mount config dan repository:

Dockerfile
FROM debian:bookworm-slim
RUN apt-get update \
 && apt-get install -y pgbackrest postgresql-client \
 && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["pgbackrest"]

Jalankan dengan volume:

Jalankan pgBackRest container
docker run --rm \
  -v /etc/pgbackrest.conf:/etc/pgbackrest.conf:ro \
  -v /var/lib/pgbackrest:/var/lib/pgbackrest \
  pgbackrest:2.59.0 --stanza=main backup --type=full

Kunci kesuksesannya adalah volume: config dibaca hanya-baca, repository di-persist. Container itu sendiri bisa dihancurkan kapan saja — data backup aman di volume.

Note

Jika backup berjalan dalam container yang terpisah dari PostgreSQL (bukan satu pod), ingat pg1-host/pg1-path bisa mengarah ke host atau pod database — konsep remote (episode 12) berlaku penuh. Pastikan network antar container tersambung.

CloudNativePG: Sidecar pgBackRest di Kubernetes

Mengapa Operator Mengelola Backup

Operator CloudNativePG (CNPG) menjadikan pgBackRest bagian tak terpisahkan dari cluster PostgreSQL di Kubernetes: ia membuat stanza, menjadwalkan backup, mengelola WAL archiving, dan menangani restore — semua lewat resource Kubernetes. Kalian tidak lagi menulis pgbackrest backup manual; kalian mendeklarasikan inginnya, operator yang mengerjakan.

Deklarasi Backup

cluster.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: aplikasi-db
spec:
  instances: 3
  storage:
    size: 100Gi
  backup:
    barmanObjectStore:
      destinationPath: s3://cnpg-backup-prod
      s3Credentials:
        accessKeyId:
          name: s3-credentials
          key: accessKeyId
        secretAccessKey:
          name: s3-credentials
          key: secretAccessKey
    retentionPolicy: "30d"
  walStorage:
    size: 20Gi
  • destinationPath — URL object storage (S3, GCS, Azure).
  • s3Credentials — referensi ke Secret Kubernetes berisi kredensial.
  • retentionPolicy — kebijakan retention dalam durasi (misal 30d).

Setiap cluster yang dideklarasikan seperti ini otomatis: stanza dibuat, WAL diarsipkan, backup full terjadwal, dan restore tersedia lewat resource Backup.

Restore via Operator

Restore dilakukan dengan mendeklarasikan resource Backup — operator menjalankan pgBackRest di balik layar:

backup-restore.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Backup
metadata:
  name: restore-20260813
spec:
  cluster:
    name: aplikasi-db

Poin penting untuk kalian: apa pun yang dipelajari di 19 episode ini (stanza, WAL, retention, PITR) tetap konsep yang sama di CNPG — operator hanya mengotomatiskan eksekusinya. Mengetahui pgBackRest secara langsung membuat debugging CNPG jauh lebih mudah.

Tip

Dalam pola sidecar CNPG, pgBackRest berjalan sebagai kontainer di pod yang sama dengan database — konsep pg1-host dan repo1-host jadi tidak relevan karena keduanya "lokal" dari sudut pandang pod. Inilah alasan memahami keduanya (episode 12) penting: arsitektur yang sama, cara pandang yang berbeda.

Cloud: S3, GCS, dan Azure Blob

S3-Compatible

Sudah dibahas di episode 12: repo1-type=s3 mendukung AWS S3 dan semua penyimpanan S3-compatible. Untuk GCS dan Azure Blob, pgBackRest punya tipe tersendiri:

/etc/pgbackrest.conf
[global]
# GCS
repo1-type = gcs
repo1-gcs-bucket = db-backup-gcs
repo1-gcs-key = /etc/pgbackrest/gcs-key.json
repo1-gcs-endpoint = storage.googleapis.com
/etc/pgbackrest.conf
[global]
# Azure Blob
repo1-type = azure
repo1-azure-account = backupaccount
repo1-azure-container = db-backup
repo1-azure-key = <storage-account-key>

Ketiganya memakai konsep yang sama: endpoint, bucket/container, dan kredensial. Setelah config benar, semua perintah (stanza-create, check, backup) identik.

IAM Role vs Static Key

Dua cara memberi kredensial cloud — dan keduanya punya trade-off:

Static KeyIAM Role / Workload Identity
PengaturanKey + secret di configRole dilekatkan ke host/instance
RotasiManual, rawan bocorOtomatis oleh penyedia cloud
SifatStatis di config fileDinamis, scoped per resource
Cocok untukMinIO, lab, eksperimenProduction di cloud

Untuk instance di cloud, IAM role (AWS), Workload Identity (GCP), atau Managed Identity (Azure) adalah praktik terbaik: kredensial tidak pernah ditulis ke config, dan permission bisa dipersempit (hanya akses bucket tertentu). pgBackRest mendukung repo1-s3-role untuk mengambil kredensial dari role:

/etc/pgbackrest.conf
[global]
repo1-type = s3
repo1-s3-bucket = db-backup-prod
repo1-s3-endpoint = s3.ap-southeast-1.amazonaws.com
repo1-s3-region = ap-southeast-1
repo1-s3-role = arn:aws:iam::123456789012:role/pgbackrest-backup-role

Warning

Static key di config adalah secret kelas satu — jangan commit ke git, jangan biarkan permission terbuka (episode 11). Untuk production cloud, mulai dengan IAM role/Workload Identity sedini mungkin; memigrasikan config yang sudah tersebar jauh lebih menyakitkan daripada memulainya dengan benar.

Membangun Platform, Bukan Server

Setelah episode 20, pgBackRest kalian bisa hidup di tiga dunia sekaligus: bare metal (episode 3-19), container Docker, dan Kubernetes via CNPG — dengan tujuan backup yang sama (S3/GCS/Azure). Ini bukan tiga sistem berbeda; ini satu sistem dengan tiga rumah. Bekal yang sama, konfigurasi yang sama, debugging yang sama.

Penutup

Inti yang harus dibawa pulang:

  • pgBackRest di Docker = image + config mount + volume repository.
  • CloudNativePG mengotomatiskan stanza/backup/restore lewat resource Kubernetes — konsepnya sama.
  • S3/GCS/Azure Blob punya tipe repository masing-masing; perintahnya identik.
  • IAM role/Workload Identity untuk production cloud; static key untuk lab dan penyimpanan on-prem.
  • Satu skill pgBackRest berlaku di semua rumah: bare metal, container, dan cloud.

Di episode 21 selanjutnya kita akan melihat ke depan: roadmap & community — arah pengembangan pgBackRest yang fokus pada reliability dan object storage, dokumentasi user guide yang lengkap, serta bagaimana bergabung dengan komunitas di GitHub, Slack, dan mailing list. Tool yang kalian pakai bukan artefak beku — ia hidup bersama komunitas!

Belajar pgBackRest - Integration: Docker, K8s & Cloud | Belajar pgBackRest