> ## Documentation Index
> Fetch the complete documentation index at: https://docs.casebender.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Déploiement sur Google Cloud Run

> Déployez CaseBender sur Google Cloud Run avec des instructions étape par étape

## 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](https://cloud.google.com/)
2. [Google Cloud CLI](https://cloud.google.com/sdk/docs/install) installé
3. [Docker](https://docs.docker.com/get-docker/) installé

## Étape 1 : Configuration Initiale

### Installer Google Cloud CLI

<CodeGroup>
  ```bash macOS theme={null}
  # Utilisation de Homebrew
  brew install google-cloud-sdk

  # Connexion à Google Cloud

  gcloud auth login

  # Configurer Docker pour utiliser Google Cloud

  gcloud auth configure-docker

  ```

  ```bash Linux theme={null}
  # Télécharger l'archive
  curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-VERSION-linux-x86_64.tar.gz

  # Extraire l'archive
  tar -xf google-cloud-cli-VERSION-linux-x86_64.tar.gz

  # Exécuter le script d'installation
  ./google-cloud-sdk/install.sh

  # Connexion à Google Cloud
  gcloud auth login

  # Configurer Docker pour utiliser Google Cloud
  gcloud auth configure-docker
  ```

  ```powershell Windows theme={null}
  # Télécharger et exécuter l'installateur
  # https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe

  # Connexion à Google Cloud
  gcloud auth login

  # Configurer Docker pour utiliser Google Cloud
  gcloud auth configure-docker
  ```
</CodeGroup>

### Initialiser le Projet

```bash theme={null}
# 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

```bash theme={null}
# 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)

```bash theme={null}
# 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)

```bash theme={null}
# Créer une instance Redis
gcloud redis instances create casebender-redis \
  --size=2 \
  --region=us-central1 \
  --redis-version=redis_6_x
```

### Configurer Secret Manager

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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é

```bash theme={null}
# 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

```bash theme={null}
# 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 :

```bash theme={null}
# 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**

   ```bash theme={null}
   gcloud run services update casebender \
     --min-instances=1 \
     --max-instances=10 \
     --region=us-central1
   ```

2. **Allocation des Ressources**
   ```bash theme={null}
   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é
