1. מבוא
במעבדת התכנות הזו תגדירו את n8n ב-Google Cloud Run. n8n הוא כלי לאוטומציה של תהליכי עבודה בקוד פתוח, שמאפשר למשתמשים לקשר בין אפליקציות ושירותים שונים כדי לבצע אוטומציה של משימות חוזרות.
ה-codelab מבוסס על מדריך התיעוד של n8n, שבו מוסבר איך לארח את n8n ב-Google Cloud Run. אנחנו נתקין ונגדיר גרסה של n8n שהיא פריסה עמידה יותר של n8n ב-Cloud Run, ברמת ייצור. הוא כולל משאבים כמו מסד נתונים להתמדה ומנהל סודות לנתונים רגישים.
מה עושים
- פריסת n8n ב-Google Cloud Run, פלטפורמת מחשוב מנוהלת ללא שרת שמריצה קונטיינרים ללא שמירת מצב בתשתית של Google.
מה תלמדו
- הקצאה ואכלוס של מסד נתונים של Cloud SQL ל-PostgreSQL שישמש כגרסה מתמשכת ועמידה להתקנת n8n.
- הקצאת קובץ האימג' של קונטיינר n8n ל-Google Cloud Run.
- בדיקת ההתקנה של n8n ב-Google Cloud Run.
מה תצטרכו
- דפדפן האינטרנט Chrome
- חשבון Gmail
- פרויקט ב-Cloud עם חיוב מופעל
2. לפני שמתחילים
יצירת פרויקט
- ב-Google Cloud Console, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud ומגיעה עם bq שנטען מראש. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud.

- אחרי שמתחברים ל-Cloud Shell, בודקים שכבר בוצע אימות ושהפרויקט מוגדר למזהה הפרויקט באמצעות הפקודה הבאה:
gcloud auth list
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט.
gcloud config list project
- אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
- מפעילים את ממשקי ה-API הנדרשים באמצעות הפקודה שמוצגת למטה. זה יימשך כמה דקות, אז כדאי לחכות בסבלנות.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
אם הפקודה תפעל בהצלחה, תוצג הודעה שדומה לזו שמופיעה בהמשך:
Operation "operations/..." finished successfully.
אם פספסתם API כלשהו, תמיד תוכלו להפעיל אותו במהלך ההטמעה. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.
לבסוף, נגדיר כמה משתני סביבה שבהם נשתמש בסקריפטים שנריץ בכמה השלבים הבאים. במסוף Cloud Shell, מריצים את שתי הפקודות הבאות (חשוב להחליף את GCP_PROJECT_ID ואת GCP_REGION בערכים המתאימים של מזהה הפרויקט והאזור (למשל us-central1) שבהם רוצים לבצע את הפריסה הזו. אנחנו משתמשים ב-us-central1 לפריסה.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. יצירת מכונה של Cloud SQL
נשתמש במופע של Google Cloud SQL ל-PostgreSQL, שישמש כשכבת העקביות לאחסון מופע n8n ונתוני ההפעלה. הפעולה הזו נדרשת כדי שההגדרה שלנו תהיה עמידה.
Cloud SQL ל-PostgreSQL הוא שירות מנוהל של מסד נתונים שעוזר לכם להגדיר, לתחזק ולנהל את מסדי הנתונים הרלציוניים של PostgreSQL ב-Google Cloud Platform.
מריצים את הפקודה הבאה ב-Cloud Shell כדי ליצור את המכונה:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
ביצוע הפקודה הזו נמשך כ-5 דקות. אחרי שהפקודה תופעל בהצלחה, יופיע פלט שמציין שהפקודה הסתיימה, יחד עם פרטי מכונת Cloud SQL כמו NAME, DATABASE_VERSION, LOCATION וכו'.
חשוב לשים לב שהשתמשנו בערך root-password בתור postgres. אם תשנו אותו למשהו אחר, חשוב לשמור אותו בהישג יד.
4. הגדרת מסד נתונים של n8n ופרטי כניסה של משתמש במסד הנתונים
עכשיו, אחרי שהכנו את המופע של Cloud SQL for PostgreSQL, אנחנו יכולים ליצור בו את מסד הנתונים של n8n, ולאחסן את הסיסמה של מסד הנתונים ואת מפתח ההצפנה ב-Google Cloud Secrets Manager.
קודם כל, ניצור מסד נתונים בשם n8n במכונה של Cloud SQL (n8n-db) שיצרנו. כל הפקודות שבהמשך מיועדות להרצה במסוף של Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
אם היצירה בוצעה בהצלחה, אמורה להופיע הודעה כזו:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
אחרי שיצרנו את מסד הנתונים, ניצור חשבון משתמש למסד הנתונים הזה. אנחנו נשתמש בפרטי הכניסה הבאים:
- מזהה משתמש :
n8n-user - סיסמה :
n8n
הערה: אם רוצים להשתמש בסיסמה אחרת שהיא חזקה יותר (מומלץ לשימוש בסביבת ייצור), צריך להשתמש בה במקום בסיסמה שבחרנו כאן, כלומר n8n. חשוב לוודא שמשתמשים בה באופן עקבי גם בכמה הפקודות הבאות.
הפקודה ליצירת משתמש במסד הנתונים מופיעה בהמשך:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
בשלב הזה, מומלץ לאחסן את פרטי הכניסה לסיסמה של מסד הנתונים של המשתמש ואת מפתח ההצפנה ב-Google Cloud Secret Manager, שהוא מערכת אחסון מאובטחת ונוחה למפתחות API, סיסמאות, אישורים ונתונים רגישים אחרים.
מתחילים עם הפקודה הבאה שמקבלת את הסיסמה שבה השתמשנו (n8n)) ומעבירה אותה לפקודה gcloud secrets create. המפתח הסודי שלנו יהיה n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
באופן דומה, נשתמש בקבוצת הפקודות הבאה כדי ליצור מפתח הצפנה, ואז ניצור משתנה סודי n8n-encryption-key שיכיל את הערך.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. יצירת חשבון שירות בשביל Google Cloud Run
בשלב הבא נבצע פריסה של n8n ב-Google Cloud Run. כדי להתכונן לכך, ניצור חשבון שירות ש-Cloud Run ישתמש בו כדי להפעיל תהליכי עבודה של n8n. לכן, אנחנו רוצים לוודא שלחשבון השירות שאנחנו יוצרים יש רק את התפקידים או ההרשאות המינימליים הנדרשים ב-Google Cloud.
בהתאם לדרישות הנוכחיות שלנו, נצטרך את התפקידים הבאים לחשבון השירות שניצור:
-
roles/cloudsql.client: נדרש כדי שלחשבון השירות תהיה גישה למסד הנתונים שלנו ב-Cloud SQL -
roles/secretAccessor: נצטרך לספק את התפקיד הזה כדי לגשת למפתחות של Secret Manager גם עבורn8n-db-passwordוגם עבורn8n-encryption-key.
בואו נתחיל. צריך להריץ את כל הפקודות שבהמשך ב-Google Cloud Shell. הפקודה הראשונה יוצרת את חשבון השירות, ואז אנחנו מקצים את התפקידים הנדרשים כמו שמוסבר. מריצים את כל הפקודות אחת אחרי השנייה. אם תתבקשו לציין תנאי לאחת מהפקודות שבהמשך, בחרו באפשרות "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"
עכשיו אפשר לפרוס את קובץ האימג' של קונטיינר n8n ב-Google Cloud Run.
6. פריסת n8n ב-Google Cloud Run
מריצים את הפקודה הבאה ב-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
הפריסה צפויה להימשך כדקה. אם הפריסה בוצעה בהצלחה, תוצג הודעה דומה לזו שמופיעה למטה:
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
רושמים את כתובת ה-URL של השירות בפלט שלמעלה, כי תשתמשו בה בשלב הבא כדי להפעיל את מסוף n8n.
7. הרצת תהליך עבודה ב-n8n
מפעילים דפדפן ועוברים לכתובת ה-URL של השירות שקיבלתם בשלב הקודם. אפשר גם לקבל את כתובת ה-URL של השירות מדף הבית של Cloud Run, שבו n8n מופיע כאחד מהשירותים.
הערה: אם מופיעה השגיאה Cannot GET / או n8n is starting up, בדרך כלל זה מצביע על כך ש-n8n עדיין נמצא בתהליך הפעלה. אפשר לרענן את הדף, והוא אמור להיטען בסופו של דבר.
בסופו של דבר יוצג מסך כמו זה שמופיע בהמשך, שבו אפשר להגדיר את חשבון הבעלים:

ממלאים את הפרטים הנדרשים, רושמים את הסיסמה ומשלימים את ההגדרה. אפשר לדלג על חלק מהשלבים, כולל השלב שבו מתבקשים לשלוח מפתח רישיון.
אם הכול ילך כשורה, תראו את דף הבית של n8n כמו בדוגמה הבאה:

אם אתם מכירים את n8n, תוכלו להסתדר עם התרגול הזה ולהשלים את ה-Lab.
אם אתם רוצים לנסות את n8n, אתם יכולים לנסות את תהליך העבודה הבא:
- לוחצים על 'פרטי כניסה' ואז על הוספת פרטי הכניסה הראשונים.

- אנחנו נגדיר אישור למפתח Gemini API. מקלידים gemini כדי להציג את האפשרות Google Gemini (PaLM) Api ואז לוחצים על Continue (המשך).

- אפשר לקבל את מפתח Gemini API בכתובת https://aistudio.google.com/app/api-keys.
- אחרי שמקבלים את המפתח, מדביקים אותו. n8n יאמת את המפתח והאישורים יוגדרו.
5. עכשיו עוברים לאפשרות Workflows (תהליכי עבודה) ולוחצים על Start from scratch (התחלה מאפס) או על create a new workflow (יצירת תהליך עבודה חדש). יוצג לכם אזור עבודה ריק, שבו תוכלו לבנות את שני הצמתים הבאים: צומת אחד של טריגר (Simple Chat) וצומת אחד של סוכן, שבו נגדיר את פרטי הכניסה שיצרנו, כך שמודל הסוכן יהיה Google Gemini. בסופו של דבר, תהליך העבודה אמור להיראות כך:

- אתם יכולים להריץ את תהליך העבודה הזה דרך חלונית הצ'אט, ואם הכול ילך כשורה, תקבלו תשובה להנחיות שלכם. דוגמאות למסכי הפעלה מוצגות בהמשך:

כך השלמנו את האימות של הפריסה של n8n ב-Google Cloud Run.
8. הסרת המשאבים
אם בחרתם להשתמש ב-codelab הזה כדי ללמוד איך להתקין ולהפעיל את n8n ב-Google Cloud Run, ולא לצורך ייצור או דרישה קבועה, חשוב למחוק את המשאבים שיצרנו במהלך הסדנה הזו כדי להימנע מחיובים שוטפים בחשבון Google Cloud.
נמחק את מופע Cloud SQL ואת שירות Cloud Run שפרסנו.
מוודאים שמשתני הסביבה הבאים מוגדרים בצורה נכונה, בהתאם לפרויקט ולאזור:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
שתי הפקודות הבאות מוחקות את שירותי Cloud Run שפרסנו:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
הפקודה הבאה מוחקת את המכונה של Cloud SQL:
gcloud sql instances delete n8n-db
שתי הפקודות הבאות מוחקות את המפתחות של Secret Manager שיצרנו:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. מזל טוב
הצלחתם לפרוס את n8n ב-Google Cloud Run ולאמת את ההגדרה באמצעות תהליך עבודה לדוגמה.