1. Introduction
Dans cet atelier de programmation, vous allez configurer n8n sur Google Cloud Run. n8n est un outil d'automatisation de workflow Open Source qui permet aux utilisateurs de connecter différentes applications et services pour automatiser les tâches répétitives.
Cet atelier de programmation est basé sur le guide de documentation n8n, qui explique comment héberger n8n sur Google Cloud Run. Nous allons installer et configurer une version de n8n qui est un déploiement plus durable et de niveau production de n8n sur Cloud Run. Il inclut des ressources telles qu'une base de données pour la persistance et un gestionnaire de secrets pour les données sensibles.
Objectifs de l'atelier
- Déployez n8n sur Google Cloud Run, une plate-forme de calcul sans serveur entièrement gérée qui exécute des conteneurs sans état sur l'infrastructure de Google.
Points abordés
- Provisionner et remplir une base de données Cloud SQL pour PostgreSQL qui servira de version persistante et durable pour notre installation n8n.
- Provisionnez l'image de conteneur n8n dans Google Cloud Run.
- Tester l'installation de n8n sur Google Cloud Run
Prérequis
- Navigateur Web Chrome
- Un compte Gmail
- Un projet Cloud pour lequel la facturation est activée
2. Avant de commencer
Créer un projet
- Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
- Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet .
- Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud et fourni avec bq. Cliquez sur "Activer Cloud Shell" en haut de la console Google Cloud.

- Une fois connecté à Cloud Shell, vérifiez que vous êtes déjà authentifié et que le projet est défini sur votre ID de projet à l'aide de la commande suivante :
gcloud auth list
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet.
gcloud config list project
- Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
- Activez les API requises à l'aide de la commande ci-dessous. Cette opération peut prendre quelques minutes. Merci de patienter.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
Si la commande s'exécute correctement, un message semblable à celui ci-dessous s'affiche :
Operation "operations/..." finished successfully.
Si vous oubliez d'activer une API, vous pourrez toujours le faire au cours de l'implémentation. Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.
Enfin, nous allons définir quelques variables d'environnement que nous utiliserons dans les scripts que nous exécuterons lors des prochaines étapes. Dans votre terminal Cloud Shell, exécutez les deux commandes suivantes (n'oubliez pas de remplacer GCP_PROJECT_ID et GCP_REGION par les valeurs respectives de votre ID de projet et de la région (par exemple, us-central1) dans laquelle vous souhaitez effectuer ce déploiement). Nous allons utiliser us-central1 pour le déploiement.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Créer une instance Cloud SQL
Nous allons utiliser une instance Google Cloud SQL pour PostgreSQL, qui constituera notre couche de persistance pour stocker notre instance n8n et les données d'exécution. Cela est nécessaire pour que notre configuration soit durable.
Cloud SQL pour PostgreSQL est un service de base de données entièrement géré qui vous aide à configurer, maintenir, gérer et administrer vos bases de données relationnelles PostgreSQL sur Google Cloud Platform.
Exécutez la commande suivante dans Cloud Shell pour créer l'instance :
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
L'exécution de cette commande prend environ cinq minutes. Une fois la commande exécutée, un résultat indiquant qu'elle est terminée doit s'afficher, ainsi que des informations sur votre instance Cloud SQL, comme NAME, DATABASE_VERSION, LOCATION, etc.
Notez que nous avons utilisé la valeur root-password comme postgres. Si vous le modifiez, veuillez le conserver.
4. Configurer la base de données n8n et les identifiants utilisateur de la base de données
Maintenant que notre instance Cloud SQL pour PostgreSQL est prête, nous pouvons y créer notre base de données n8n, tout en stockant notre mot de passe de base de données et notre clé de chiffrement dans Google Cloud Secrets Manager.
Commençons par créer une base de données nommée n8n dans l'instance Cloud SQL (n8n-db) que nous avons créée. Toutes les commandes ci-dessous doivent être exécutées dans le terminal Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
Si la création réussit, le message suivant s'affiche :
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Maintenant que la base de données est créée, nous allons créer un compte utilisateur pour celle-ci. Nous allons utiliser les identifiants suivants :
- ID utilisateur :
n8n-user - Mot de passe :
n8n
Remarque : Si vous souhaitez utiliser un autre mot de passe plus sécurisé (recommandé pour la production), utilisez-le à la place de celui que nous avons choisi ici, à savoir "n8n". Veillez toutefois à l'utiliser de manière cohérente dans les commandes suivantes.
La commande permettant de créer l'utilisateur de la base de données est indiquée ci-dessous :
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
À ce stade, il est judicieux de stocker les identifiants du mot de passe et de la clé de chiffrement de la base de données utilisateur dans Google Cloud Secret Manager, qui est un système de stockage sécurisé et pratique pour les clés API, les mots de passe, les certificats et autres données sensibles.
Nous commençons par la commande suivante, qui prend le mot de passe que nous avons utilisé (n8n)) et le transmet à la commande gcloud secrets create. Notre clé secrète sera n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
De même, nous utiliserons l'ensemble de commandes suivant pour générer une clé de chiffrement, puis créer une variable secrète n8n-encryption-key qui contiendra la valeur.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. Créer un compte de service pour Google Cloud Run
Nous allons déployer n8n sur Google Cloud Run à l'étape suivante. Pour vous y préparer, nous allons créer un compte de service que Cloud Run utilisera pour exécuter les workflows n8n. Pour ce faire, nous voulons nous assurer que le compte de service que nous créons ne dispose que des rôles/autorisations minimales requises sur Google Cloud.
Compte tenu de nos exigences actuelles, nous aurons besoin des rôles suivants pour le compte de service que nous allons créer :
roles/cloudsql.client: nécessaire pour que le compte de service puisse accéder à notre base de données Cloud SQLroles/secretAccessor: nous devrons fournir ce rôle pour accéder aux clés Secret Manager pourn8n-db-passwordetn8n-encryption-key.
Allons-y. Toutes les commandes ci-dessous doivent être exécutées dans Google Cloud Shell. La première crée le compte de service, puis nous fournissons les rôles requis, comme indiqué. Exécutez chaque commande l'une après l'autre. Si vous êtes invité à spécifier une condition pour l'une des commandes ci-dessous, choisissez "None".
gcloud iam service-accounts create n8n-service-account \
--display-name="n8n Service Account"
export SA_NAME=n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com
gcloud secrets add-iam-policy-binding n8n-db-password \
--member="serviceAccount:$SA_NAME" \
--role="roles/secretmanager.secretAccessor"
gcloud secrets add-iam-policy-binding n8n-encryption-key \
--member="serviceAccount:$SA_NAME" \
--role="roles/secretmanager.secretAccessor"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SA_NAME" \
--role="roles/cloudsql.client"
Nous sommes maintenant prêts à déployer l'image de conteneur n8n dans Google Cloud Run.
6. Déployer n8n sur Google Cloud Run
Exécutez la commande suivante dans Google Cloud Shell :
gcloud run deploy n8n \
--image=n8nio/n8n:latest \
--command="/bin/sh" \
--args="-c,sleep 5;n8n start" \
--region=$REGION \
--allow-unauthenticated \
--port=5678 \
--memory=2Gi \
--no-cpu-throttling \
--set-env-vars="N8N_PORT=5678,N8N_PROTOCOL=https,DB_TYPE=postgresdb,DB_POSTGRESDB_DATABASE=n8n,DB_POSTGRESDB_USER=n8n-user,DB_POSTGRESDB_HOST=/cloudsql/$PROJECT_ID:$REGION:n8n-db,DB_POSTGRESDB_PORT=5432,DB_POSTGRESDB_SCHEMA=public,GENERIC_TIMEZONE=UTC,QUEUE_HEALTH_CHECK_ACTIVE=true" \
--set-secrets="DB_POSTGRESDB_PASSWORD=n8n-db-password:latest,N8N_ENCRYPTION_KEY=n8n-encryption-key:latest" \
--add-cloudsql-instances=$PROJECT_ID:$REGION:n8n-db \
--service-account=$SA_NAME
Le déploiement devrait prendre environ une minute. Si le déploiement a réussi, un message semblable à celui ci-dessous s'affiche :
Deploying container to Cloud Run service [n8n] in project [YOUR_PROJECT_ID] region [us-central1]
Deploying new service...
Setting IAM Policy...done
Creating Revision...done
Routing traffic...done
Done.
Service [n8n] revision [n8n-00001-8nh] has been deployed and is serving 100 percent of traffic.
Service URL: https://n8n-<SOME_ID>.us-central1.run.app
Notez l'URL du service dans le résultat ci-dessus, car vous l'utiliserez à l'étape suivante pour lancer la console n8n.
7. Exécuter un workflow n8n
Lancez un navigateur et accédez à l'URL de service que vous avez obtenue à l'étape précédente. Vous pouvez également obtenir l'URL du service sur la page d'accueil de Cloud Run, où n8n figure parmi les services.
Remarque : Si vous obtenez un message d'erreur indiquant que l'écran Cannot GET / ou n8n is starting up s'affiche, cela signifie généralement que n8n est toujours en cours de démarrage. Vous pouvez actualiser la page. Elle devrait finir par se charger.
Vous finirez par voir un écran comme celui ci-dessous, où vous pourrez configurer le compte propriétaire :

Remplissez les informations requises, notez le mot de passe, puis terminez la configuration. Vous pouvez ignorer certaines étapes, y compris celle qui vous demande d'envoyer une clé de licence.
Si tout se passe bien, la page d'accueil de n8n devrait s'afficher, comme illustré ci-dessous :

Si vous connaissez n8n, vous pourrez vous y retrouver et terminer l'atelier.
Si vous souhaitez tester n8n, vous pouvez essayer le workflow suivant :
- Cliquez sur "Credentials" (Identifiants), puis sur Add first credential (Ajouter un premier identifiant).

- Nous allons configurer un identifiant de clé API Gemini. Saisissez "gemini" pour afficher l'option "Google Gemini (PaLM) Api", puis cliquez sur Continuer.

- Vous pouvez obtenir la clé API Gemini sur https://aistudio.google.com/app/api-keys.
- Une fois que vous avez la clé, collez-la. n8n validera la clé et l'identifiant sera configuré.
5. Accédez maintenant à l'option "Workflows" (Workflows), puis cliquez sur "Start from scratch" (Commencer à partir de zéro) ou "Create a new workflow" (Créer un workflow). Une zone de dessin vide s'affiche. Vous pouvez y créer les deux nœuds suivants : un déclencheur (Simple Chat) et un agent. Dans ce dernier, nous allons configurer les identifiants que nous avons créés afin que le modèle d'agent soit Google Gemini. Vous devriez obtenir un workflow qui ressemble à ceci :

- Vous pouvez exécuter ce workflow dans le volet de chat et, si tout se passe bien, obtenir une réponse à vos requêtes. Vous trouverez ci-dessous des exemples d'écrans d'exécution :

La validation de notre déploiement n8n sur Google Cloud Run est terminée.
8. Nettoyage
Si vous avez choisi d'utiliser cet atelier de programmation pour apprendre à installer et à exécuter n8n sur Google Cloud Run, et non pour une exigence de production / permanente, vous pouvez éviter que des frais continus ne soient facturés sur votre compte Google Cloud. Pour ce faire, il est important de supprimer les ressources que nous avons créées lors de cet atelier.
Nous allons supprimer l'instance Cloud SQL et le service Cloud Run que nous avons déployés.
Assurez-vous que les variables d'environnement suivantes sont correctement définies, en fonction de votre projet et de votre région :
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Les deux commandes suivantes suppriment les services Cloud Run que nous avons déployés :
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
La commande suivante supprime l'instance Cloud SQL :
gcloud sql instances delete n8n-db
Les deux commandes suivantes suppriment les clés Secret Manager que nous avons créées :
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Félicitations
Félicitations ! Vous avez déployé n8n sur Google Cloud Run et validé la configuration avec un exemple de workflow.