1. Wprowadzenie
W tym ćwiczeniu skonfigurujesz n8n w Google Cloud Run. n8n to narzędzie do automatyzacji przepływu pracy typu open source, które umożliwia użytkownikom łączenie różnych aplikacji i usług w celu automatyzacji powtarzalnych zadań.
Ćwiczenie jest oparte na przewodniku po dokumentacji n8n, który wyjaśnia, jak hostować n8n w Google Cloud Run. Zainstalujemy i skonfigurujemy wersję n8n, która jest trwalszym wdrożeniem n8n w Cloud Run na potrzeby środowiska produkcyjnego. Obejmuje ona zasoby takie jak baza danych do przechowywania danych i Secret Manager do przechowywania danych wrażliwych.
Co zrobisz
- Wdrożysz n8n w Google Cloud Run, czyli usłudze w pełni zarządzanej, bezserwerowej platformie obliczeniowej, która uruchamia kontenery bezstanowe w infrastrukturze Google.
Czego się nauczysz
- Jak utworzyć i wypełnić bazę danych Cloud SQL for PostgreSQL, która będzie trwałą wersją naszej instalacji n8n.
- Jak udostępnić obraz kontenera n8n w Google Cloud Run.
- Jak przetestować instalację n8n w Google Cloud Run.
Czego potrzebujesz
- Przeglądarka Chrome
- Konto Gmail
- Projekt Cloud z włączonymi płatnościami
2. Zanim zaczniesz
Utwórz projekt
- W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud .
- Sprawdź, czy w projekcie w chmurze włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności .
- Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud, które jest wstępnie załadowane za pomocą bq. Kliknij Aktywuj Cloud Shell na górze konsoli Google Cloud.

- Po połączeniu z Cloud Shell możesz sprawdzić, czy uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
- Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
- Jeśli projekt nie jest ustawiony, użyj tego polecenia:
gcloud config set project <YOUR_PROJECT_ID>
- Włącz wymagane interfejsy API za pomocą polecenia pokazanego poniżej. Może to potrwać kilka minut, więc uzbrój się w cierpliwość.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
Po pomyślnym wykonaniu polecenia powinien wyświetlić się komunikat podobny do tego:
Operation "operations/..." finished successfully.
Jeśli pominiesz jakiś interfejs API, zawsze możesz go włączyć podczas implementacji. Informacje o poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.
Na koniec ustawimy kilka zmiennych środowiskowych, których będziemy używać w skryptach, które uruchomimy w kolejnych krokach. W terminalu Cloud Shell wykonaj te 2 polecenia (pamiętaj, aby zastąpić GCP_PROJECT_ID i GCP_REGION odpowiednimi wartościami identyfikatora projektu i regionu (np. us-central1), w którym chcesz przeprowadzić to wdrożenie. Na potrzeby wdrożenia użyjemy regionu us-central1.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Tworzenie instancji Cloud SQL
Będziemy używać instancji Cloud SQL for PostgreSQL, która będzie naszą warstwą trwałości do przechowywania instancji n8n i danych wykonania. Jest to konieczne, aby nasza konfiguracja była trwała.
Cloud SQL for PostgreSQL to w pełni zarządzana usługa bazy danych, która pomaga w konfiguracji i utrzymaniu relacyjnych baz danych PostgreSQL w Google Cloud Platform, a także w zarządzaniu i administrowaniu takimi bazami.
Aby utworzyć instancję, uruchom w Cloud Shell to polecenie:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
Wykonanie tego polecenia trwa około 5 minut. Po pomyślnym wykonaniu polecenia powinien wyświetlić się komunikat informujący o zakończeniu polecenia oraz informacje o instancji Cloud SQL, takie jak NAZWA, WERSJA_BAZY_DANYCH, LOKALIZACJA itp.
Pamiętaj, że jako wartość root-password użyliśmy postgres. Jeśli zmienisz ją na inną, zapisz ją.
4. Konfigurowanie bazy danych n8n i danych logowania użytkownika bazy danych
Teraz, gdy mamy już gotową instancję Cloud SQL for PostgreSQL, możemy utworzyć w niej bazę danych n8n, a także zapisać hasło do bazy danych i klucz szyfrowania w Google Cloud Secrets Manager.
Najpierw utwórzmy bazę danych o nazwie n8n w utworzonej przez nas instancji Cloud SQL (n8n-db). Wszystkie polecenia poniżej należy uruchomić w terminalu Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
Po pomyślnym utworzeniu powinien wyświetlić się komunikat podobny do tego:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Teraz, gdy baza danych jest utworzona, utwórzmy dla niej konto użytkownika. Użyjemy tych danych logowania:
- Identyfikator użytkownika :
n8n-user - Hasło :
n8n
Uwaga: jeśli chcesz użyć innego, silniejszego hasła (zalecane w przypadku środowiska produkcyjnego), użyj go zamiast hasła, które wybraliśmy tutaj, czyli n8n. Pamiętaj jednak, aby używać go konsekwentnie w kolejnych poleceniach.
Polecenie tworzenia użytkownika bazy danych podajemy poniżej:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
W tym momencie warto zapisać dane logowania do hasła użytkownika bazy danych i klucza szyfrowania w Google Cloud Secret Manager, który jest bezpiecznym i wygodnym systemem przechowywania kluczy interfejsu API, haseł, certyfikatów i innych danych wrażliwych.
Zaczynamy od tego polecenia, które pobiera użyte przez nas hasło (n8n) i przekazuje je do polecenia gcloud secrets create. Nasz klucz obiektu tajnego będzie mieć nazwę n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Podobnie użyjemy następnego zestawu poleceń, aby wygenerować klucz szyfrowania, a następnie utworzyć zmienną tajną n8n-encryption-key, która będzie przechowywać tę wartość.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. Tworzenie konta usługi dla Google Cloud Run
W następnym kroku wdrożymy n8n w Google Cloud Run. Aby się do tego przygotować, utworzymy konto usługi, które Cloud Run będzie używać do wykonywania przepływów pracy n8n. W tym celu chcemy się upewnić, że utworzone przez nas konto usługi ma tylko minimalne wymagane role i uprawnienia w Google Cloud.
Biorąc pod uwagę nasze obecne wymagania, będziemy potrzebować tych ról dla tworzonego konta usługi:
roles/cloudsql.client: jest to wymagane, aby konto usługi mogło uzyskać dostęp do naszej bazy danych Cloud SQL.roles/secretAccessor: musimy przypisać tę rolę, aby uzyskać dostęp do kluczy Secret Manager zarówno dlan8n-db-password, jak in8n-encryption-key.
Zaczynamy. Wszystkie polecenia poniżej należy wykonać w Google Cloud Shell. Pierwsze polecenie tworzy konto usługi, a następnie przypisujemy wymagane role. Uruchom każde polecenie po kolei. Jeśli w przypadku któregoś z poleceń poniżej pojawi się prośba o określenie warunku, wybierz "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"
Teraz możemy wdrożyć obraz kontenera n8n w Google Cloud Run.
6. Wdrażanie n8n w Google Cloud Run
Uruchom w Google Cloud Shell to polecenie:
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,N8N_ENDPOINT_HEALTH=health,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
Wdrożenie potrwa prawdopodobnie około minuty. Po pomyślnym wdrożeniu powinien wyświetlić się komunikat podobny do tego:
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
Zapisz adres URL usługi w powyższych danych wyjściowych, ponieważ użyjesz go w następnym kroku do uruchomienia konsoli n8n.
7. Uruchamianie przepływu pracy n8n
Uruchom przeglądarkę i otwórz adres URL usługi uzyskany w poprzednim kroku. Adres URL usługi możesz też uzyskać na stronie głównej Cloud Run, gdzie n8n będzie widoczny jako jedna z usług.
Uwaga: jeśli pojawi się błąd „Cannot GET /” lub komunikat „n8n is starting up”, zwykle oznacza to, że n8n nadal się uruchamia.Cannot GET /n8n is starting up Możesz odświeżyć stronę, która powinna się w końcu wczytać.
W końcu zobaczysz ekran podobny do tego poniżej, na którym możesz skonfigurować konto właściciela:

Wypełnij wymagane informacje, zapisz hasło i dokończ konfigurację. Możesz pominąć niektóre kroki, w tym krok, w którym trzeba wysłać klucz licencyjny.
Jeśli wszystko pójdzie dobrze, powinna się wyświetlić strona główna n8n, jak pokazano poniżej:

Jeśli znasz n8n, poradzisz sobie z tym i ukończysz ćwiczenie.
Jeśli chcesz przetestować n8n, możesz wypróbować ten przepływ pracy:
- Kliknij Credentials (Dane logowania), a następnie Add first credential (Dodaj pierwsze dane logowania).

- Skonfigurujemy dane logowania klucza interfejsu Gemini API. Wpisz gemini, aby wyświetlić opcję Google Gemini (PaLM) API, a następnie kliknij Continue (Dalej).

- Klucz interfejsu Gemini API możesz uzyskać na stronie https://aistudio.google.com/app/api-keys.
- Gdy uzyskasz klucz, wklej go. n8n zweryfikuje klucz i dane logowania zostaną skonfigurowane.
5. Teraz otwórz opcję Workflows (Przepływy pracy) i kliknij Start from scratch (Zacznij od zera) lub utwórz nowy przepływ pracy. Spowoduje to wyświetlenie pustego obszaru roboczego, w którym możesz utworzyć te 2 węzły: jeden to wyzwalacz (Simple Chat), a drugi to agent, w którym skonfigurujemy utworzone przez nas dane logowania, aby model agenta był Google Gemini. Na koniec powinien powstać przepływ pracy, który wygląda tak:

- Możesz uruchomić ten przepływ pracy za pomocą okienka czatu i, jeśli wszystko pójdzie dobrze, uzyskać odpowiedź na swoje pytania. Przykładowe ekrany wykonania pokazujemy poniżej:

To już koniec sprawdzania wdrożenia n8n w Google Cloud Run.
8. Czyszczenie
Jeśli używasz tego ćwiczenia, aby dowiedzieć się, jak zainstalować i uruchomić n8n w Google Cloud Run, a nie na potrzeby środowiska produkcyjnego lub stałych wymagań, możesz uniknąć ciągłych opłat na koncie Google Cloud. W tym celu musisz usunąć zasoby utworzone podczas tych warsztatów.
Usuniemy instancję Cloud SQL i wdrożoną przez nas usługę Cloud Run.
Upewnij się, że te zmienne środowiskowe są prawidłowo ustawione zgodnie z Twoim projektem i regionem:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Te 2 polecenia usuwają wdrożone przez nas usługi Cloud Run:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
To polecenie usuwa instancję Cloud SQL:
gcloud sql instances delete n8n-db
Te 2 polecenia usuwają utworzone przez nas klucze Secret Manager:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Gratulacje
Gratulacje! Udało Ci się wdrożyć n8n w Google Cloud Run i sprawdzić konfigurację za pomocą przykładowego przepływu pracy.