1. Einführung
In diesem Codelab richten Sie n8n in Google Cloud Run ein. n8n ist ein Open-Source-Tool zur Workflow-Automatisierung, mit dem Nutzer verschiedene Anwendungen und Dienste verbinden können, um sich wiederholende Aufgaben zu automatisieren.
Das Codelab basiert auf der n8n-Dokumentation, in der beschrieben wird, wie n8n in Google Cloud Run gehostet wird. Wir installieren und konfigurieren eine Version von n8n, die eine stabilere, produktionsreife Bereitstellung von n8n in Cloud Run ist. Sie enthält Ressourcen wie eine Datenbank für die Persistenz und Secret Manager für vertrauliche Daten.
Aufgaben
- Stellen Sie n8n in Google Cloud Run bereit. Das ist eine vollständig verwaltete,serverlose Computing-Plattform, auf der zustandslose Container in der Infrastruktur von Google ausgeführt werden.
Lerninhalte
- Bereitstellung und Befüllung einer Cloud SQL for PostgreSQL-Datenbank, die als persistente und dauerhafte Version für unsere n8n-Installation dient.
- Stellen Sie das n8n-Container-Image in Google Cloud Run bereit.
- Installation von n8n in Google Cloud Run testen
Voraussetzungen
- Chrome-Webbrowser
- Ein Gmail-Konto
- Ein Cloud-Projekt mit aktivierter Abrechnung
2. Hinweis
Projekt erstellen
- Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
- Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist .
- Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird und in der „bq“ vorinstalliert ist. Klicken Sie oben in der Google Cloud Console auf „Cloud Shell aktivieren“.

- Wenn Sie mit Cloud Shell verbunden sind, können Sie mit dem folgenden Befehl prüfen, ob Sie bereits authentifiziert sind und das Projekt auf Ihre Projekt-ID festgelegt ist:
gcloud auth list
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt.
gcloud config list project
- Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>
- Aktivieren Sie die erforderlichen APIs mit dem unten gezeigten Befehl. Dies kann einige Minuten dauern.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
Bei erfolgreicher Ausführung des Befehls sollte eine Meldung wie die unten gezeigte angezeigt werden:
Operation "operations/..." finished successfully.
Wenn eine API fehlt, können Sie sie jederzeit während der Implementierung aktivieren. Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.
Zum Schluss legen wir noch einige Umgebungsvariablen fest, die wir in den Skripts verwenden, die wir in den nächsten Schritten ausführen. Führen Sie in Ihrem Cloud Shell-Terminal die folgenden beiden Befehle aus. Ersetzen Sie dabei GCP_PROJECT_ID und GCP_REGION durch die entsprechenden Werte für Ihre Projekt-ID und die Region (z. B. us-central1), in der die Bereitstellung erfolgen soll. Wir verwenden us-central1 für die Bereitstellung.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Cloud SQL-Instanz erstellen
Wir verwenden eine Google Cloud SQL for PostgreSQL-Instanz, die als Persistenzebene zum Speichern unserer n8n-Instanz und Ausführungsdaten dient. Das ist erforderlich, damit unsere Einrichtung dauerhaft ist.
Cloud SQL for PostgreSQL ist ein vollständig verwalteter Datenbankdienst, mit dem Sie relationale PostgreSQL-Datenbanken auf der Google Cloud Platform einrichten, pflegen und verwalten können.
Führen Sie den folgenden Befehl in Cloud Shell aus, um die Instanz zu erstellen:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
Die Ausführung dieses Befehls dauert etwa 5 Minuten. Nachdem der Befehl erfolgreich ausgeführt wurde, sollte eine Ausgabe angezeigt werden, die angibt, dass der Befehl abgeschlossen ist, zusammen mit den Informationen zu Ihrer Cloud SQL-Instanz wie NAME, DATABASE_VERSION, LOCATION usw.
Beachten Sie, dass wir den root-password-Wert als postgres verwendet haben. Wenn Sie es ändern, sollten Sie es sich merken.
4. n8n-Datenbank und Anmeldedaten für Datenbanknutzer einrichten
Nachdem wir unsere Cloud SQL for PostgreSQL-Instanz eingerichtet haben, können wir darin unsere n8n-Datenbank erstellen und unser Datenbankpasswort und unseren Verschlüsselungsschlüssel in Google Cloud Secrets Manager speichern.
Erstellen wir zuerst eine Datenbank mit dem Namen n8n in der Cloud SQL-Instanz (n8n-db), die wir erstellt haben. Alle unten aufgeführten Befehle müssen im Google Cloud Shell-Terminal ausgeführt werden.
gcloud sql databases create n8n --instance=n8n-db
Wenn das Erstellen erfolgreich war, sollte eine Meldung wie die folgende angezeigt werden:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Nachdem die Datenbank erstellt wurde, erstellen wir ein Nutzerkonto für diese Datenbank. Wir verwenden die folgenden Anmeldedaten:
- Nutzer-ID :
n8n-user - Passwort :
n8n
Hinweis: Wenn Sie ein anderes, stärkeres Passwort verwenden möchten (empfohlen für die Produktion), sollten Sie dieses anstelle des hier ausgewählten Passworts (n8n) verwenden. Achten Sie jedoch darauf, dass Sie es auch in den nächsten Befehlen verwenden.
Der Befehl zum Erstellen des Datenbanknutzers ist unten aufgeführt:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
An dieser Stelle empfiehlt es sich, die Anmeldedaten für das Nutzerdatenbankpasswort und den Verschlüsselungsschlüssel in Google Cloud Secret Manager zu speichern. Secret Manager bietet eine sichere und bequeme Möglichkeit, API-Schlüssel, Passwörter, Zertifikate und andere sensible Daten zu speichern.
Wir beginnen mit dem folgenden Befehl, der das verwendete Passwort (n8n)) in den Befehl gcloud secrets create einfügt. Unser geheimer Schlüssel ist n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Ähnlich verwenden wir die nächste Gruppe von Befehlen, um einen Verschlüsselungsschlüssel zu generieren und dann eine geheime Variable „n8n-encryption-key“ zu erstellen, die den Wert enthält.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. Dienstkonto für Google Cloud Run erstellen
Im nächsten Schritt stellen wir n8n in Google Cloud Run bereit. Zur Vorbereitung erstellen wir ein Dienstkonto, das von Cloud Run zum Ausführen von n8n-Workflows verwendet wird. Dazu möchten wir sicherstellen, dass das von uns erstellte Dienstkonto nur die minimal erforderlichen Rollen/Berechtigungen in Google Cloud hat.
Gemäß unseren aktuellen Anforderungen benötigen wir die folgenden Rollen für das von uns erstellte Dienstkonto:
roles/cloudsql.client: Dies ist erforderlich, damit das Dienstkonto auf unsere Cloud SQL-Datenbank zugreifen kann.roles/secretAccessor: Diese Rolle muss zugewiesen werden, um auf die Secret Manager-Schlüssel fürn8n-db-passwordundn8n-encryption-keyzuzugreifen.
Fangen wir an! Alle unten aufgeführten Befehle müssen in Google Cloud Shell ausgeführt werden. Mit dem ersten Befehl wird das Dienstkonto erstellt. Anschließend weisen wir die erforderlichen Rollen zu. Führen Sie die Befehle nacheinander aus. Wenn Sie aufgefordert werden, eine Bedingung für einen der folgenden Befehle anzugeben, wählen Sie "None" aus.
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"
Wir können das n8n-Container-Image jetzt in Google Cloud Run bereitstellen.
6. n8n in Google Cloud Run bereitstellen
Führen Sie den folgenden Befehl in Google Cloud Shell aus:
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
Die Bereitstellung dauert wahrscheinlich etwa eine Minute. Bei erfolgreicher Bereitstellung wird eine Meldung ähnlich der folgenden angezeigt:
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
Notieren Sie sich die Dienst-URL in der obigen Ausgabe, da Sie sie im nächsten Schritt zum Starten der n8n-Konsole verwenden.
7. n8n-Workflow ausführen
Starten Sie einen Browser und rufen Sie die Dienst-URL auf, die Sie im vorherigen Schritt erhalten haben. Sie können die Dienst-URL auch auf der Cloud Run-Startseite abrufen, auf der n8n als einer der Dienste aufgeführt ist.
Hinweis: Wenn Sie eine Fehlermeldung erhalten, die besagt, dass Cannot GET / oder n8n is starting up, bedeutet das in der Regel, dass n8n noch gestartet wird. Wenn Sie die Seite aktualisieren, sollte sie schließlich geladen werden.
Schließlich wird ein Bildschirm wie unten angezeigt, auf dem Sie das Inhaberkonto einrichten können:

Geben Sie die erforderlichen Informationen ein, notieren Sie sich das Passwort und schließen Sie die Einrichtung ab. Sie können einige der Schritte überspringen, einschließlich des Schritts, in dem Sie aufgefordert werden, einen Lizenzschlüssel zu senden.
Wenn alles wie geplant ausgeführt wird, sollte die Startseite für n8n angezeigt werden, wie unten dargestellt:

Wenn Sie mit n8n vertraut sind, können Sie dieses Lab trotzdem abschließen.
Wenn Sie n8n ausprobieren möchten, können Sie den folgenden Workflow verwenden:
- Klicken Sie auf „Anmeldedaten“ und dann auf Erste Anmeldedaten hinzufügen.

- Wir richten eine Anmeldedaten für den Gemini API-Schlüssel ein. Geben Sie „gemini“ ein, um die Option „Google Gemini (PaLM) API“ aufzurufen, und klicken Sie dann auf Weiter.

- Den Gemini API-Schlüssel erhalten Sie unter https://aistudio.google.com/app/api-keys.
- Sobald Sie den Schlüssel haben, fügen Sie ihn ein. n8n validiert den Schlüssel und die Anmeldedaten sind jetzt eingerichtet.
5. Gehen Sie nun zur Option „Workflows“ und klicken Sie auf „Von Grund auf neu beginnen“ oder „Neuen Workflow erstellen“. Dadurch wird eine leere Arbeitsfläche geöffnet, auf der Sie die folgenden beiden Knoten erstellen können: einen Trigger (Simple Chat) und einen Agenten. Für den Agenten richten wir die erstellten Anmeldedaten ein, sodass das Agentenmodell Google Gemini ist. Der Workflow sollte dann so aussehen:

- Sie können diesen Workflow über den Chatbereich ausführen und erhalten dann im Idealfall eine Antwort auf Ihre Prompts. Beispielhafte Ausführungsbildschirme sind unten zu sehen:

Damit ist die Validierung unserer n8n-Bereitstellung in Google Cloud Run abgeschlossen.
8. Bereinigen
Wenn Sie dieses Codelab verwendet haben, um zu erfahren, wie Sie n8n in Google Cloud Run installieren und ausführen, und nicht für Produktions- oder dauerhafte Anforderungen, können Sie laufende Gebühren für Ihr Google Cloud-Konto vermeiden, indem Sie die Ressourcen löschen, die wir während dieses Workshops erstellt haben.
Wir löschen die Cloud SQL-Instanz und den Cloud Run-Dienst, den wir bereitgestellt haben.
Prüfen Sie, ob die folgenden Umgebungsvariablen entsprechend Ihrem Projekt und Ihrer Region richtig festgelegt sind:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Mit den folgenden beiden Befehlen werden die von uns bereitgestellten Cloud Run-Dienste gelöscht:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
Mit dem folgenden Befehl wird die Cloud SQL-Instanz gelöscht:
gcloud sql instances delete n8n-db
Mit den folgenden beiden Befehlen werden die von uns erstellten Secret Manager-Schlüssel gelöscht:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Glückwunsch
Herzlichen Glückwunsch! Sie haben n8n erfolgreich in Google Cloud Run bereitgestellt und die Einrichtung mit einem Beispiel-Workflow validiert.