425 字
2 分鐘
Google Cloud Run 整合 Cloudflare,不需要 Cloud Load Balancing
Google Cloud Run 可以綁定自己的網域,可以透過下圖三種方式進行,但沒辦法與 Cloudflare 整合,本文說明如何整合 Google Cloud Run 與 Cloudflare

兩個方案
- Cloudflare Tunnel:透過 cloudflared 執行 tunnel
- Cloudflare Origin Rules:修改 HTTP Host,需要 Cloudflare Enterprise 授權
方法一、透過 Cloudflare Tunnel
之前我有介紹過 Cloudflare Tunnel 的妙用,我們需要在 Cloud Run 裡面部署 cloudflare,把其他 Cloud Run 的流量打出去 Cloudflare。
步驟一、註冊 Cloudflare Tunnel
參考上文介紹,註冊產生 Cloudflare Tunnel 的 Token
步驟二、在 Cloud Run 部署 Cloudflare Tunnel
建立 Cloud Run 參考以下資訊:
- 容器映像檔網址:cloudflare/cloudflared
- 容器通訊埠:8080
- 容器引數
tunnel --metrics 0.0.0.0:8080 run --token <token> - 執行個體數量下限:1
- 網路 > 輸入控管:內部
- 安全性 > 驗證:必須通過驗證

步驟三、建立 Web 服務
這裏以 Nginx 為範例,建立 Cloud Run 參考以下資訊:
- 容器映像檔網址:nginx
- 容器通訊埠:80
- 網路 > 輸入控管:內部
- 安全性 > 驗證:允許未經驗證的叫用
步驟四、設定 Cloudflare Tunnel
在 Cloudflare Tunnel 後台建立一筆紀錄:
- URL:上述 Nginx 在 Cloud Run 的網址,使用 https
- HTTP Settings > HTTP Host Header:與上述 URL 相同

這樣就可以經過 Cloudflare 來訪問 Cloud Run
方法二、透過 Origin Rules
用此方法不需要另外建立 cloudflared 容器,不過需要為 Cloud Run 的網路設為對外公開且不驗證。
步驟一、設定 DNS
在 Cloudflare DNS 設定網域 CNAME 到 Cloud Run 的網域,並開啟 Proxy

步驟二、設定 Rules
建立一個 Origin Rules,將網域的主機標頭改為 Cloud Run 的網域

修改主機標頭的功能,僅限 Cloudflare Enterprise
