← Blog

Sauvegarder des bases Postgres avec Google Cloud Run

Une application Python Flask légère qui tourne sur Cloud Run pour exécuter des dumps PostgreSQL et les transférer vers Google Cloud Storage, déclenchée par Cloud Scheduler. Aucune infrastructure always-on nécessaire.

Vue d'ensemble

Fonctionnalités clés :

  • Récupération sécurisée du mot de passe depuis Secret Manager
  • Inclusion/exclusion flexible de schémas et tables
  • Upload automatique vers Google Cloud Storage
  • Déclenchement facile via Cloud Scheduler

Prérequis

Avant le déploiement :

  • Un bucket Google Cloud Storage (GCS) pour stocker les dumps
  • Un service account avec les permissions :
    • roles/storage.objectUser pour l'accès au bucket GCS
    • roles/secretmanager.secretAccessor pour récupérer le mot de passe depuis Secret Manager

Fonctionnement

  1. Cloud Scheduler déclenche le service Cloud Run via HTTP
  2. Cloud Run récupère le mot de passe depuis Secret Manager
  3. Connexion à l'instance Cloud SQL via le proxy Cloud SQL Auth
  4. Exécution de pg_dump avec les options configurées
  5. Upload du fichier dump vers le bucket GCS

Mise en place

1. Déployer sur Cloud Run

gcloud run deploy pg-dump-function \
  --image=docker.io/damsdgn29/pg-dump-function:latest \
  --region=YOUR_REGION \
  --service-account=YOUR_SERVICE_ACCOUNT \
  --set-env-vars="GOOGLE_CLOUD_PROJECT=YOUR_PROJECT" \
  --set-env-vars="REGION=YOUR_REGION" \
  --set-env-vars="DB_INSTANCE_NAME=YOUR_INSTANCE" \
  --set-env-vars="DB_NAME=YOUR_DB,DB_USER=YOUR_USER" \
  --set-env-vars="SECRET_NAME=YOUR_SECRET" \
  --set-env-vars="GCS_BUCKET=YOUR_BUCKET"

Variables d'environnement optionnelles pour filtrer les schémas et tables :

--set-env-vars="INCLUDED_SCHEMAS=public,EXCLUDED_TABLES=logs"

Variables disponibles : INCLUDED_SCHEMAS, EXCLUDED_SCHEMAS, INCLUDED_TABLES, EXCLUDED_TABLES, DUMP_BASE_NAME.

2. Configurer Cloud Scheduler

gcloud scheduler jobs create http pg-dump-schedule \
  --schedule="0 2 * * *" \
  --uri="https://YOUR_CLOUD_RUN_URL" \
  --http-method=POST \
  --oidc-service-account-email=YOUR_SERVICE_ACCOUNT

Ce job déclenche le service tous les jours à 2h du matin.

Conclusion

Cette solution offre des sauvegardes PostgreSQL automatisées et sécurisées, stockées dans Google Cloud Storage. Cloud Run assure la scalabilité et la fiabilité, Cloud Scheduler garantit une exécution régulière. Vérifiez que votre service account dispose des permissions nécessaires sur le bucket GCS.

Le code source est disponible sur GitHub.