Aller au contenu
v1.0MIT · open source

Backups
Postgres K8s,
sans toucher
au cluster.

pgpilot détecte tes instances PostgreSQL dans Kubernetes, génère la config et déploie des CronJobs qui font pg_dump → S3. Aucun opérateur, aucun sidecar, aucune modification de pod.

  • PostgreSQL 14 → 17
  • Aucun sidecar
  • S3 · MinIO
  • Binaire statique
~ pgpilot — production
$ pgpilot detect scan du cluster prod-eu-west-1… ✓ 3 instances PostgreSQL · 2 namespaces ├ app/postgres-main pg 16.2 ✓ reachable ├ app/postgres-events pg 15.6 ✓ reachable └ billing/postgres-main pg 16.1 ✓ reachable → ~/.config/pgpilot/backup.yaml $ pgpilot deploy myapp ✓ app/postgres-main (created) ✓ app/postgres-events (created) ✓ billing/postgres-main (created) 3 CronJob(s) déployés. $ pgpilot backup myapp run --wait ▸ postgres-main 412 MB → s3://acme-backups ▸ postgres-events 198 MB → s3://acme-backups ✓ 3 backups terminés en 42s
Commandes pgpilot : detect, deploy, backup, restore, status.
01en trois commandes

De zéro à backups,
en moins d'une minute.

Aucun opérateur à installer, aucun CRD, aucun Helm chart. pgpilot parle à l'API Kubernetes avec tes droits existants et crée des objets standards que tu peux lire, éditer ou supprimer à la main.

  1. 01

    Détecte tes bases

    $pgpilot detect

    pgpilot lit ta kubeconfig, scanne le cluster et trouve les Services PostgreSQL joignables. Il écrit un backup.yaml prérempli — pas une ligne de YAML à la main.

  2. 02

    Déploie les CronJobs

    $pgpilot deploy myapp

    Tu renseignes le schedule, le bucket et la rétention. pgpilot crée un CronJob par base dans le namespace concerné. Rien d'autre ne bouge dans le cluster.

  3. 03

    Vérifie, puis oublie

    $pgpilot backup myapp run --wait

    Un backup manuel pour confirmer que le dump part bien vers S3. Ensuite le cron prend le relais, et status te dit en une ligne si tout tourne.

—vue d'ensemble

Rien qui tourne
en permanence.

pgpilot lit le cluster, écrit ta config et pose des CronJobs standards. Ensuite il sort du chemin — si tu le désinstalles, tes backups continuent.

pgpilot
Cluster K8slecture seule
PostgreSQL14 → 17
backup.yamlversionné
CronJobsnatifs
S3 · MinIOpg_dump
Restoreà la demande
pgpilot inspecte le cluster Kubernetes et les instances PostgreSQL, génère un backup.yaml versionné, puis déploie des CronJobs natifs qui écrivent les dumps vers S3 ou MinIO, avec restauration à la demande.
02la CLI

Cinq commandes.
C'est tout.

pgpilot reste petit par choix. Le comportement vit dans ton backup.yaml, versionné dans ton repo — pas dans une console web.

pgpilot detect
$pgpilot detect
scan du cluster prod-eu-west-1…
 
3 instances PostgreSQL trouvées
 
NAMESPACE SERVICE VERSION ÉTAT
app postgres-main pg 16.2 reachable
app postgres-events pg 15.6 reachable
billing postgres-main pg 16.1 reachable
 
→ config écrite : ~/.config/pgpilot/backup.yaml
→ renseigne ton bucket S3 et tes credentials
03fonctionnalités

Ce qu'il fait,
et rien de plus.

Sauvegarder et restaurer des bases PostgreSQL dans Kubernetes. Pas de dashboard, pas de télémétrie, pas de compte à créer.

A

Détection automatique

pgpilot inspecte les Services du cluster, teste la joignabilité et relève la version de chaque instance. La config sort préremplie.

app/postgres-main      pg 16.2
app/postgres-events    pg 15.6
billing/postgres-main  pg 16.1
B

Config déclarative

Schedule, rétention, bucket, credentials : un seul fichier YAML par environnement, versionnable dans ton repo.

schedule:  '0 2 * * *'
retention: 7d
bucket:    acme-backups
endpoint:  minio.internal
C

Secrets jamais en clair

Les credentials référencent tes Secrets Kubernetes existants. pgpilot ne les lit pas et ne les écrit nulle part.

db_password:
  from: k8s-secret://app/env#DB_PASSWORD
D

Restore interactif

Liste les archives d'une base, choisis un point de restauration, confirme. pgpilot lance un Job et suit son exécution.

▸ 20260908T030000Z.dump.gz  412 MB
  20260907T030000Z.dump.gz  398 MB
E

S3 et MinIO

AWS S3, ou n'importe quel stockage compatible via un endpoint custom. Un champ à changer, rien d'autre.

s3://acme-backups/myapp/postgres/
04installation

Un binaire.
Rien à signer.

Pas de runtime, pas de compte, pas de plan tarifaire. Télécharge, rends exécutable, lance.

macOS · arm64
$curl -L github.com/theo-mrn/pgpilot/releases/latest/…
     -o /usr/local/bin/pgpilot && chmod +x /usr/local/bin/pgpilot
  • macOS arm64
  • macOS amd64
  • Linux amd64
  • Linux arm64