Aperçu

Ce guide vous accompagne dans le déploiement de CaseBender sur Google Cloud Run en utilisant nos images Docker préconstruites.

Prérequis

  1. Compte Google Cloud
  2. Google Cloud CLI installé
  3. Docker installé

Étape 1 : Configuration Initiale

Installer Google Cloud CLI

# Utilisation de Homebrew
brew install google-cloud-sdk

# Connexion à Google Cloud

gcloud auth login

# Configurer Docker pour utiliser Google Cloud

gcloud auth configure-docker

Initialiser le Projet

# Définir l'ID de votre projet
gcloud config set project VOTRE_ID_PROJET

# Activer les API requises
gcloud services enable \
  cloudbuild.googleapis.com \
  run.googleapis.com \
  secretmanager.googleapis.com \
  cloudresourcemanager.googleapis.com \
  artifactregistry.googleapis.com

Étape 2 : Configurer l’Infrastructure Cloud

Créer un Bucket Cloud Storage

# Créer un bucket de stockage
gsutil mb -l us-central1 gs://casebender-storage

# Créer un compte de service pour le stockage
gcloud iam service-accounts create casebender-storage \
  --display-name "Compte de Service pour Stockage CaseBender"

# Obtenir l'email du compte de service
STORAGE_SA_EMAIL=$(gcloud iam service-accounts list \
  --filter="displayName:Compte de Service pour Stockage CaseBender" \
  --format="value(email)")

# Accorder les permissions
gsutil iam ch \
  serviceAccount:$STORAGE_SA_EMAIL:objectViewer,objectCreator \
  gs://casebender-storage

# Créer et télécharger la clé du compte de service
gcloud iam service-accounts keys create storage-key.json \
  --iam-account=$STORAGE_SA_EMAIL

# Créer un secret pour les identifiants de stockage
gcloud secrets create casebender-storage-key \
  --replication-policy="automatic"

# Importer la clé du compte de service comme secret
gcloud secrets versions add casebender-storage-key \
  --data-file=storage-key.json

Configurer Cloud SQL (PostgreSQL)

# Créer une instance PostgreSQL
gcloud sql instances create casebender-db \
  --database-version=POSTGRES_14 \
  --cpu=2 \
  --memory=4GB \
  --region=us-central1 \
  --root-password="VOTRE_MOT_DE_PASSE_SECURISE"

# Créer une base de données
gcloud sql databases create casebender \
  --instance=casebender-db

# Créer un utilisateur
gcloud sql users create casebender \
  --instance=casebender-db \
  --password="VOTRE_MOT_DE_PASSE_SECURISE"

Configurer Memorystore (Redis)

# Créer une instance Redis
gcloud redis instances create casebender-redis \
  --size=2 \
  --region=us-central1 \
  --redis-version=redis_6_x

Configurer Secret Manager

# Créer et stocker les variables d'environnement
cat << EOF | gcloud secrets create casebender-env --data-file=-
AUTH_SECRET=votre-secret-auth
AUTH_SALT=votre-sel-auth
POSTGRES_PRISMA_URL="postgresql://casebender:VOTRE_MOT_DE_PASSE_SECURISE@/casebender?host=/cloudsql/VOTRE_ID_PROJET:us-central1:casebender-db"
REDIS_URL="redis://ADRESSE_IP_REDIS:6379"
GOOGLE_STORAGE_BUCKET=casebender-storage
EOF

Étape 3 : Récupérer et Pousser les Images Docker

# Créer un dépôt Artifact Registry
gcloud artifacts repositories create casebender \
  --repository-format=docker \
  --location=us-central1

# Configurer Docker pour Artifact Registry
gcloud auth configure-docker us-central1-docker.pkg.dev

# Récupérer les images CaseBender
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest

# Taguer les images pour Google Artifact Registry
docker tag casebender/casebender:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest
docker tag casebender/workflow-processor:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest
docker tag casebender/misp-processor:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest

# Pousser les images
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest

Étape 4 : Déployer les Services

Déployer l’Application Principale

# Déployer sur Cloud Run
gcloud run deploy casebender \
  --image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_STORAGE_BUCKET=casebender-storage \
  --set-secrets "/secrets/storage-key=casebender-storage-key:latest" \
  --service-account=$STORAGE_SA_EMAIL \
  --add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
  --set-secrets "/app/.env=casebender-env:latest"

Déployer le Processeur de Workflow

# Déployer le processeur de workflow
gcloud run deploy workflow-processor \
  --image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest \
  --platform managed \
  --region us-central1 \
  --no-allow-unauthenticated \
  --service-account=$STORAGE_SA_EMAIL \
  --add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
  --set-secrets "/app/.env=casebender-env:latest"

Déployer le Processeur MISP

# Déployer le processeur MISP
gcloud run deploy misp-processor \
  --image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest \
  --platform managed \
  --region us-central1 \
  --no-allow-unauthenticated \
  --service-account=$STORAGE_SA_EMAIL \
  --add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
  --set-secrets "/app/.env=casebender-env:latest"

Étape 5 : Configurer le Domaine et SSL

Mapper un Domaine Personnalisé

# Ajouter un mapping de domaine
gcloud run domain-mappings create \
  --service casebender \
  --domain votre-domaine.com \
  --region us-central1

Suivez les étapes de vérification DNS dans la Console Google Cloud pour compléter le mapping de domaine.

Surveillance et Maintenance

Configurer la Surveillance

  1. Naviguez vers Cloud Monitoring dans la Console Google Cloud
  2. Créez une vérification d’activité pour votre service
  3. Configurez des alertes pour :
    • Taux d’erreurs
    • Latence
    • Nombre d’instances
    • Utilisation de la mémoire

Consulter les Journaux

# Voir les journaux de service
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=casebender" --limit 50

# Diffuser les journaux en continu
gcloud logging tail "resource.type=cloud_run_revision AND resource.labels.service_name=casebender"

Mettre à Jour l’Application

Pour déployer des mises à jour :

# Construire et déployer une nouvelle version
gcloud builds submit --config cloudbuild.yaml

# Revenir en arrière si nécessaire
gcloud run services rollback casebender \
  --to-revision=ID_REVISION \
  --region=us-central1

Optimisation des Coûts

  1. Configuration de l’Auto-Scaling

    gcloud run services update casebender \
      --min-instances=1 \
      --max-instances=10 \
      --region=us-central1
  2. Allocation des Ressources

    gcloud run services update casebender \
      --memory=1Gi \
      --cpu=1 \
      --region=us-central1

Dépannage

Problèmes Courants

  1. Problèmes de Connexion

    • Vérifier la connexion Cloud SQL
    • Vérifier la connectivité Redis
    • Valider les variables d’environnement
  2. Problèmes de Performance

    • Examiner les métriques d’instance
    • Vérifier l’allocation des ressources
    • Analyser les modèles de requêtes
  3. Échecs de Déploiement

    • Vérifier les journaux de construction
    • Vérifier les permissions du compte de service
    • Examiner la configuration de déploiement

Prochaines Étapes

  • Configurer des pipelines CI/CD
  • Configurer des stratégies de sauvegarde
  • Implémenter la surveillance et les alertes
  • Revoir les meilleures pratiques de sécurité