iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
AI & Data

進擊的 n8n系列 第 18

Day 18:使用 Cloud SQL for Postgres(Private IP)接 n8n

  • 分享至 

  • xImage
  •  

昨天我們成功把 n8n 跑在 Cloud Run,但遇到一個大問題:Cloud Run 是無狀態的,只要容器重啟,所有 Workflow 和 Credentials 都會消失。這也是為什麼 n8n 官方建議:正式環境請搭配 Postgres,盡量就不要用 SQLite 囉。

今天,我們就來把 Cloud SQL for Postgres 串接進 Cloud Run 的 n8n,並且透過 Private IP 讓兩者走內網,避免流量 expose 到 internet 上。

步驟 1:建立 Cloud SQL for Postgres

gcloud sql instances create n8n-postgres \
  --database-version=POSTGRES_15 \
  --tier=db-custom-1-3840 \
  --region=asia-east1 \
  --network=default \
  --no-assign-ip \
  --storage-size=20GB

這裡使用 --no-assign-ipPrivate IP,確保只允許 VPC 內部服務存取。

步驟 2:建立資料庫與使用者

gcloud sql databases create n8ndb --instance=n8n-postgres
gcloud sql users create n8nuser --instance=n8n-postgres --password=n8npass

步驟 3:建立 VPC Connector

Cloud Run 要能連上 Cloud SQL(Private IP),必須透過 Serverless VPC Connector

gcloud compute networks vpc-access connectors create n8n-connector \
  --region=asia-east1 \
  --network=default \
  --range=10.8.0.0/28

步驟 4:重新部署 n8n

在部署時加入環境變數:

gcloud run deploy n8n \
  --image gcr.io/<PROJECT_ID>/n8n \
  --region=asia-east1 \
  --platform=managed \
  --vpc-connector=n8n-connector \
  --set-env-vars DB_TYPE=postgresdb \
  --set-env-vars DB_POSTGRESDB_HOST=<CLOUD_SQL_PRIVATE_IP> \
  --set-env-vars DB_POSTGRESDB_DATABASE=n8ndb \
  --set-env-vars DB_POSTGRESDB_USER=n8nuser \
  --set-env-vars DB_POSTGRESDB_PASSWORD=n8npass \
  --allow-unauthenticated
  • 補充:根據較新版本的 n8n,可以直接設定 DB_POSTGRESDB_SSL=true 這個環境變數,n8n 會自動處理 sslmode

完成後,n8n 的 Workflow 與 Credentials 都會寫進 Cloud SQL,解決了資料不持久的問題。


常見錯誤排查

  1. database does not exist
    👉 確認 Cloud SQL 資料庫名稱是否正確(例:n8ndb)。
  2. FATAL: password authentication failed
    👉 帳號密碼錯誤,或忘記用 gcloud sql users set-password 更新。
  3. Cloud Run 無法連線資料庫
    👉 確認 --vpc-connector 有設定,且 Cloud SQL 使用的是 Private IP
  4. 效能瓶頸
    👉 如果 Workflow 很多,建議 Cloud SQL 升級到更高 tier,並開啟自動擴容。

我們已經完成 Cloud Run + Cloud SQL Private IP 的最佳實踐。這個架構適合小型團隊或企業內部 PoC,既安全又幾乎免維運。接下來會介紹如何把 Cloud Storage 接進 n8n,實作簡單的檔案上傳功能。


上一篇
Day 17:快速部署 n8n on Google Cloud Run
下一篇
Day 19:設定 Cloud Storage 與 n8n 的連動(檔案儲存)
系列文
進擊的 n8n25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言