425 字
2 分鐘
Google Cloud Run 整合 Cloudflare,不需要 Cloud Load Balancing
2024-10-08
無標籤

Google Cloud Run 可以綁定自己的網域,可以透過下圖三種方式進行,但沒辦法與 Cloudflare 整合,本文說明如何整合 Google Cloud Run 與 Cloudflare


兩個方案#

  1. Cloudflare Tunnel:透過 cloudflared 執行 tunnel
  2. 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