1. Wprowadzenie
W tym laboratorium kodowym skonfigurujesz n8n w Google Cloud Run. n8n to narzędzie do automatyzacji przepływów pracy typu open source, które umożliwia użytkownikom łączenie różnych aplikacji i usług w celu automatyzacji powtarzalnych zadań.
Ten przewodnik opiera się na dokumentacji n8n, która wyjaśnia, jak hostować n8n w Google Cloud Run. Zainstalujemy i skonfigurujemy wersję n8n, która jest bardziej wytrzymałym wdrożeniem n8n w Cloud Run na potrzeby środowiska produkcyjnego. Obejmuje zasoby takie jak baza danych do przechowywania trwałych danych i menedżer obiektów tajnych do przechowywania danych wrażliwych.
Co musisz zrobić
- Wdróż n8n w Google Cloud Run,czyli w pełni zarządzanej platformie obliczeniowej bezserwerowej, która uruchamia bezstanowe kontenery w infrastrukturze Google.
Czego się nauczysz
- Aprowizowanie i wypełnianie bazy danych Cloud SQL for PostgreSQL, która będzie działać jako trwała wersja instalacji n8n.
- Udostępnij obraz kontenera n8n w Google Cloud Run.
- Sprawdź instalację n8n w Google Cloud Run.
Czego potrzebujesz
- przeglądarki Chrome,
- konto Gmail,
- Projekt Cloud z włączonymi płatnościami
2. Zanim zaczniesz
Utwórz projekt
- W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud.
- Sprawdź, czy w projekcie Cloud 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 narzędziem bq. U góry konsoli Google Cloud kliknij Aktywuj Cloud Shell.

- Po połączeniu z Cloud Shell sprawdź, czy jesteś już uwierzytelniony i czy projekt jest 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, aby go ustawić:
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 zachowaj 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 poniżej:
Operation "operations/..." finished successfully.
Jeśli pominiesz jakiś interfejs API, możesz go włączyć w trakcie wdrażania. 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 uruchamianych 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, w którym chcesz przeprowadzić wdrożenie, np. us-central1): W przypadku wdrożenia użyjemy us-central1.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Tworzenie instancji Cloud SQL
Będziemy używać instancji Google 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 zajmuje około 5 minut. Po pomyślnym wykonaniu polecenia powinny się wyświetlić dane wyjściowe wskazujące, że polecenie zostało wykonane, a także informacje o instancji Cloud SQL, takie jak NAME, DATABASE_VERSION, LOCATION itp.
Pamiętaj, że użyliśmy wartości root-password jako postgres. Jeśli zmienisz go na inny, zapisz go.
4. Konfigurowanie bazy danych n8n i danych logowania użytkownika bazy danych
Gdy instancja Cloud SQL for PostgreSQL będzie gotowa, 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 instancji Cloud SQL (n8n-db). Wszystkie polecenia poniżej należy uruchamiać w terminalu Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
Po utworzeniu powinna pojawić się wiadomość podobna do tej:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Teraz, gdy baza danych jest już utworzona, utwórzmy konto użytkownika dla tej bazy danych. Użyjemy tych danych logowania:
- Identyfikator użytkownika :
n8n-user - hasło :
n8n
Uwaga: jeśli chcesz użyć innego, silniejszego hasła (zalecanego 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 podano poniżej:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
W tym momencie warto zapisać dane logowania do bazy danych użytkowników oraz klucz szyfrowania w usłudze Secret Manager Google Cloud, która 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 hasło (n8n)) i przekazuje je do polecenia gcloud secrets create. Nasz klucz obiektu tajnego to n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Podobnie użyjemy kolejnego zestawu poleceń, aby wygenerować klucz szyfrowania, a następnie utworzyć tajną zmienną n8n-encryption-key, która będzie przechowywać 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 na potrzeby Google Cloud Run
W następnym kroku wdrożymy n8n w Google Cloud Run. Aby się do tego przygotować, utworzymy konto usługi, którego Cloud Run będzie używać do wykonywania przepływów pracy n8n. W tym celu chcemy mieć pewność, że utworzone przez nas konto usługi ma w Google Cloud tylko minimalne wymagane role lub uprawnienia.
Zgodnie z naszymi obecnymi wymaganiami utworzone przez nas konto usługi będzie potrzebować tych ról:
roles/cloudsql.client: jest to wymagane, aby konto usługi miało dostęp do naszej bazy danych Cloud SQL.roles/secretAccessor: musimy przyznać tę rolę, aby uzyskać dostęp do kluczy Menedżera obiektów tajnych zarówno w przypadkun8n-db-password, jak in8n-encryption-key.
Zaczynamy. Wszystkie polecenia poniżej muszą być wykonane w Google Cloud Shell. Pierwsza z nich tworzy konto usługi, a następnie przypisuje do niego wymagane role. Uruchom wszystkie polecenia po kolei. Jeśli w przypadku któregoś z poniższych poleceń 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"
Możemy teraz wdrożyć obraz kontenera n8n w Google Cloud Run.
6. Wdrażanie n8n w Google Cloud Run
Uruchom to polecenie w 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
Wdrożenie powinno potrwać około minuty. Po pomyślnym wdrożeniu powinien wyświetlić się komunikat podobny do tego poniżej:
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
Zanotuj adres URL usługi z 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, na której n8n jest wymieniona jako jedna z usług.
Uwaga: jeśli pojawi się błąd Cannot GET / lub n8n is starting up, zwykle oznacza to, że n8n nadal się uruchamia. Odśwież stronę. Powinna się w końcu załadować.
W końcu zobaczysz ekran podobny do tego poniżej, na którym możesz skonfigurować konto właściciela:

Podaj wymagane informacje, zapisz hasło i dokończ konfigurację. Możesz pominąć niektóre kroki, w tym ten, w którym prosisz o przesłanie klucza licencyjnego.
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 modułem i go ukończysz.
Jeśli chcesz przetestować n8n, możesz wypróbować ten przepływ pracy:
- Kliknij Dane logowania, a następnie Dodaj pierwsze dane logowania.

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

- Klucz interfejsu Gemini API możesz uzyskać na stronie https://aistudio.google.com/app/api-keys.
- Gdy uzyskasz klucz, wklej go. n8n sprawdzi jego poprawność i dane logowania zostaną skonfigurowane.
5. Teraz otwórz opcję Przepływy pracy i kliknij Zacznij od zera lub Utwórz nowy przepływ pracy. Wyświetli się puste pole, w którym możesz utworzyć 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. Gotowy przepływ pracy powinien wyglądać tak:

- Możesz uruchomić ten proces w panelu czatu i jeśli wszystko pójdzie dobrze, otrzymasz odpowiedź na swoje prompty. Przykładowe ekrany wykonania są widoczne poniżej:

To już koniec weryfikacji wdrożenia n8n w Google Cloud Run.
8. Czyszczenie
Jeśli ten przewodnik służy Ci do nauki instalowania i uruchamiania n8n w Google Cloud Run, a nie do celów produkcyjnych lub stałych, możesz uniknąć obciążania konta Google Cloud bieżącymi opłatami. W tym celu usuń zasoby utworzone podczas tych warsztatów.
Usuniemy instancję Cloud SQL i wdrożoną usługę Cloud Run.
Sprawdź, czy te zmienne środowiskowe są prawidłowo ustawione zgodnie z 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.