跳至主要內容
ESC
Study Jam:雲端基礎實作 — 第 7/10 篇

Cloud Run 無伺服器開發

Cloud Run 無伺服器開發

課程概述

Cloud Run 是 GCP 的全託管無伺服器容器平台。不管你用什麼語言寫的容器化應用,都能丟上去跑,而且完全不用自己管底層的基礎設施。這堂課會帶你走過 Cloud Run 的整個開發流程,從容器怎麼建構,一路到實際部署上線。

Cloud Run 交付與執行架構:原始碼與 Dockerfile 經建置和弱點掃描產生不可變映像,存入 Artifact Registry 後部署成 Revision;HTTPS 流量在版本間分配,各版本依請求與並發量自動擴縮

左半是供應鏈:Source → Build → Scan → Artifact Registry → Revision;右半是執行面: TLS/IAM 後的流量可在新舊 Revision 間分配,每個版本再依 Request 與 Concurrency 從 0 擴到 N。 CPU、Memory、Timeout、Min/Max Instances 與 Secret 是控制這個擴縮行為的主要旋鈕。

你將學到

  • 使用 Cloud Build 建構容器映像
  • 將映像推送至 Artifact Registry
  • 部署並配置 Cloud Run 服務
  • 設定自動擴展、並發與資源限制
  • 管理環境變數與密鑰

核心概念

Cloud Run 部署流程

原始碼 → Dockerfile → Cloud Build → Artifact Registry → Cloud Run

關鍵配置項

配置說明預設值
—max-instances最大實例數100
—min-instances最小實例數(避免冷啟動)0
—concurrency每實例並發請求數80
—memory記憶體512Mi
—cpuCPU 數量1
—timeout請求逾時300s
Min Instances 解決冷啟動,Concurrency 決定單一實例承載方式,Max Instances 則保護資料庫與外部 API。三者應由同一組 SLO、壓測與下游上限共同決定。
Cloud Run 同時請求先填入現有實例的 Concurrency 槽位,沒有空位時才擴增實例;Max Instances 限制總容量以保護下游資料庫

Concurrency 是單一實例能同時處理的請求數,不是每秒吞吐量。現有實例滿載時平台才增加實例; Max Instances 則是保護下游的保險絲,避免服務瞬間擴張把資料庫連線用盡。

Artifact Registry vs Container Registry

Container Registry 已經退役了,現在一律改用 Artifact Registry:

# 建立 Artifact Registry 倉庫
gcloud artifacts repositories create my-repo \
  --repository-format=docker \
  --location=us-central1

# 建構並推送映像
gcloud builds submit --tag us-central1-docker.pkg.dev/PROJECT/my-repo/app

# 部署到 Cloud Run
gcloud run deploy my-service \
  --image us-central1-docker.pkg.dev/PROJECT/my-repo/app \
  --region us-central1 \
  --allow-unauthenticated
Cloud Run Secret 安全邊界:Secret Manager 透過 Secret Accessor 角色授權 Revision 使用的 Service Account,執行期才以環境變數或掛載檔案取得 Secret,禁止寫入程式碼、映像或明文設定

Secret 不應跟著 Source 或 Docker Image 永久封裝;Revision 使用的 Service Account 必須先通過 IAM, 執行期才從 Secret Manager 取得指定版本。輪替到 Secret v2 後部署新 Revision,回滾路徑仍然清楚。

減少冷啟動

  • 設定 --min-instances=1 保持至少一個暖實例
  • 使用較小的容器映像(Alpine、distroless)
  • 將初始化邏輯移出請求處理路徑

實作重點

  • Cloud Run 僅在處理請求時計費(CPU always-on 模式例外)
  • 容器必須監聽 PORT 環境變數指定的連接埠
  • 使用 Secret Manager 管理敏感配置,而非環境變數
  • 善用 Cloud Run 的 revision 機制做金絲雀部署

Skill Badge 指引

Lab 連結Serverless Cloud Run Development — 完成此 lab 可獲得 Skill Badge

延伸學習

Study Jam:雲端基礎實作 — 7/10 完成 查看系列全覽 →

留言討論

徽章解鎖!