การติดตั้งใช้งานและการเรียกใช้ n8n ใน Google Cloud Run

1. บทนำ

ในโค้ดแล็บนี้ คุณจะได้ตั้งค่า n8n ใน Google Cloud Run ซึ่งเป็นเครื่องมือการทำงานอัตโนมัติแบบเวิร์กโฟลว์แบบโอเพนซอร์สที่ช่วยให้ผู้ใช้เชื่อมต่อแอปพลิเคชันและบริการต่างๆ เพื่อทำงานที่ซ้ำๆ โดยอัตโนมัติได้

Codelab นี้อิงตามคู่มือเอกสารประกอบของ n8n ซึ่งอธิบายวิธีโฮสต์ n8n ใน Google Cloud Run เราจะติดตั้งและกำหนดค่า n8n เวอร์ชันที่ทนทานกว่าและเป็นการติดตั้งใช้งาน n8n ระดับการผลิตใน Cloud Run ซึ่งรวมถึงทรัพยากรต่างๆ เช่น ฐานข้อมูลเพื่อความคงทน และ Secret Manager สำหรับข้อมูลที่ละเอียดอ่อน

สิ่งที่คุณต้องทำ

  • ติดตั้งใช้งาน n8n ใน Google Cloud Run ซึ่งเป็นแพลตฟอร์มการประมวลผลแบบ Serverless ที่มีการจัดการครบวงจรซึ่งเรียกใช้คอนเทนเนอร์แบบไม่เก็บสถานะในโครงสร้างพื้นฐานของ Google

สิ่งที่คุณจะได้เรียนรู้

  • จัดสรรและป้อนข้อมูลฐานข้อมูล Cloud SQL สำหรับ PostgreSQL ซึ่งจะทำหน้าที่เป็นเวอร์ชันที่คงทนและเชื่อถือได้สำหรับการติดตั้ง n8n
  • จัดสรรอิมเมจคอนเทนเนอร์ n8n ไปยัง Google Cloud Run
  • ทดสอบการติดตั้ง n8n ใน Google Cloud Run

สิ่งที่คุณต้องมี

  • เว็บเบราว์เซอร์ Chrome
  • บัญชี Gmail
  • โปรเจ็กต์ Cloud ที่เปิดใช้การเรียกเก็บเงิน

2. ก่อนเริ่มต้น

สร้างโปรเจ็กต์

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
  3. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud และโหลด bq ไว้ล่วงหน้า คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud

รูปภาพปุ่มเปิดใช้งาน Cloud Shell

  1. เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
  1. เปิดใช้ API ที่จำเป็นผ่านคำสั่งที่แสดงด้านล่าง การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดทนรอ
gcloud services enable run.googleapis.com \
                       sqladmin.googleapis.com \
                       secretmanager.googleapis.com 

เมื่อเรียกใช้คำสั่งสำเร็จ คุณควรเห็นข้อความที่คล้ายกับข้อความที่แสดงด้านล่าง

Operation "operations/..." finished successfully.

หากพลาด API ใดไป คุณก็เปิดใช้ได้เสมอในระหว่างการติดตั้งใช้งาน โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

สุดท้าย เราจะตั้งค่าตัวแปรสภาพแวดล้อม 2-3 ตัวที่เราจะใช้ในสคริปต์ที่เราจะเรียกใช้ในอีก 2-3 ขั้นตอนข้างหน้า ในเทอร์มินัล Cloud Shell ให้เรียกใช้ 2 คำสั่งต่อไปนี้ (อย่าลืมแทนที่ 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 สำหรับ 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 แต่โปรดตรวจสอบว่าคุณใช้รหัสผ่านนั้นอย่างสม่ำเสมอในคำสั่ง 2-3 คำสั่งถัดไปด้วย

คำสั่งในการสร้างผู้ใช้ฐานข้อมูลมีดังนี้

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

การติดตั้งใช้งานน่าจะใช้เวลาประมาณ 1 นาที เมื่อติดตั้งใช้งานสำเร็จ คุณควรเห็นข้อความคล้ายกับข้อความที่แสดงด้านล่าง

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 ของบริการในเอาต์พุตด้านบน เนื่องจากคุณจะต้องใช้ URL นั้นในขั้นตอนถัดไปเพื่อเปิดใช้คอนโซล n8n

7. เรียกใช้เวิร์กโฟลว์ n8n

เปิดเบราว์เซอร์และไปที่ URL ของบริการที่คุณได้รับในขั้นตอนก่อนหน้า นอกจากนี้ คุณยังดู URL ของบริการได้จากหน้าแรกของ Cloud Run ซึ่งคุณจะเห็น n8n แสดงเป็นหนึ่งในบริการ

หมายเหตุ: หากได้รับข้อผิดพลาดที่ระบุว่าCannot GET /หน้าจอหรือn8n is starting up โดยปกติแล้วข้อผิดพลาดนี้จะบ่งบอกว่า n8n ยังคงเริ่มต้นอยู่ คุณรีเฟรชหน้าเว็บได้และหน้าเว็บควรจะโหลดได้ในที่สุด

ในที่สุดคุณจะเห็นหน้าจอเหมือนกับที่แสดงด้านล่าง ซึ่งคุณสามารถตั้งค่าบัญชีเจ้าของได้

5a3b1d60d02b13ec.png

กรอกรายละเอียดที่จำเป็น จดรหัสผ่าน และทำการตั้งค่าให้เสร็จสมบูรณ์ คุณสามารถข้ามขั้นตอนบางอย่างได้ รวมถึงขั้นตอนที่ขอให้ส่งคีย์ใบอนุญาต

หากทุกอย่างเป็นไปด้วยดี คุณควรเห็นหน้าแรกของ n8n ดังที่แสดงด้านล่าง

3e072e9189ff9464.png

หากคุ้นเคยกับ n8n คุณจะสามารถทำตามขั้นตอนต่างๆ และทำห้องทดลองให้เสร็จสมบูรณ์ได้

หากต้องการทดลองใช้ n8n แบบคร่าวๆ คุณสามารถลองใช้เวิร์กโฟลว์ต่อไปนี้

  1. คลิก "ข้อมูลเข้าสู่ระบบ" แล้วคลิกเพิ่มข้อมูลเข้าสู่ระบบแรก

14a1f3d2098a266c.png

  1. เราจะตั้งค่าข้อมูลเข้าสู่ระบบคีย์ Gemini API พิมพ์ gemini เพื่อแสดงตัวเลือก Google Gemini (PaLM) API แล้วคลิกต่อไป

7f48bfe35e5d9e98.png

  1. คุณรับคีย์ Gemini API ได้จาก https://aistudio.google.com/app/api-keys
  2. เมื่อได้คีย์แล้ว ให้วางคีย์นั้น n8n จะตรวจสอบคีย์และตั้งค่าข้อมูลเข้าสู่ระบบ

3f31cbfc5072f113.png 5. ตอนนี้ไปที่ตัวเลือกเวิร์กโฟลว์ แล้วคลิกเริ่มจากศูนย์หรือสร้างเวิร์กโฟลว์ใหม่ ซึ่งจะแสดงพื้นที่ว่างที่คุณสามารถสร้าง 2 โหนดต่อไปนี้ โหนดหนึ่งคือทริกเกอร์ (Simple Chat) และอีกโหนดคือ Agent ซึ่งเราจะตั้งค่าข้อมูลเข้าสู่ระบบที่เราสร้างขึ้น เพื่อให้โมเดล Agent เป็น Google Gemini ในที่สุดคุณก็จะมีเวิร์กโฟลว์ที่มีลักษณะดังนี้

8f394e456ae7d1a.png

  1. คุณเรียกใช้เวิร์กโฟลว์นี้ผ่านแผงแชทได้ และหากทุกอย่างเป็นไปด้วยดี คุณจะได้รับคำตอบสำหรับพรอมต์ ตัวอย่างหน้าจอการดำเนินการแสดงอยู่ด้านล่าง

aec85c84f65d0da1.png

การดำเนินการนี้จะทำให้การตรวจสอบการติดตั้งใช้งาน 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"

คำสั่ง 2 รายการต่อไปนี้จะลบบริการ Cloud Run ที่เราได้ติดตั้งใช้งาน

gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

คำสั่งต่อไปนี้จะลบอินสแตนซ์ Cloud SQL

gcloud sql instances delete n8n-db

คำสั่ง 2 รายการต่อไปนี้จะลบคีย์ Secret Manager ที่เราสร้างขึ้น

gcloud secrets delete n8n-db-password

gcloud secrets delete n8n-encryption-key

9. ขอแสดงความยินดี

ยินดีด้วย คุณติดตั้งใช้งาน n8n ใน Google Cloud Run และตรวจสอบการตั้งค่าด้วยเวิร์กโฟลว์ตัวอย่างเรียบร้อยแล้ว

เอกสารอ้างอิง