Cloud Run 網路的最佳做法

本頁概述設定 Cloud Run 資源網路選項的最佳做法。建立資源前,建議您詳閱本頁面的所有章節,瞭解 Cloud Run 支援的網路選項及其影響。

監控 IP 位址使用情形

如果您使用直連虛擬私有雲輸出,請確認子網路有足夠的 IP 位址。使用的 IP 位址數量取決於工作負載執行的容器執行個體數量,因此建議您監控 IP 位址用量。請務必確保 IP 用量不超過子網路支援的範圍。

如要預估 IP 位址用量,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 Cloud Monitoring Metrics Explorer 頁面:

    前往 Cloud Monitoring Metrics Explorer

  2. 使用指標類型 run.googleapis.com/container/instance_count,查詢專案中的容器執行個體數量。Cloud Monitoring 可讓您查看這項指標在一段時間內的值。

  3. 將執行個體數量指標的值乘以 2,即可估算使用中的 IP 位址數量。

IP 位址耗盡策略

如果 Cloud Run 工作負載數量龐大,使用 RFC 1918 私人 IP 位址空間搭配直連虛擬私有雲輸出,可能會導致 IP 耗盡。下列策略可協助您使用替代 IP 位址範圍,管理 IP 位址耗盡問題。

使用非 RFC 1918 IPv4 位址

除了 RFC 1918 IPv4 位址範圍外,Cloud Run 也支援 RFC 6598 和 E 類/RFC 5735 範圍。所有Google Cloud 服務和功能都可與這些非 RFC 1918 範圍搭配使用,包括虛擬私有雲網路、Cloud Load Balancing 和 Private Service Connect。

為確保最佳相容性,建議您從 RFC 6598 (100.64.0.0/10) 範圍開始。如果您已在其他地方使用這個範圍,建議改用 E 類/RFC 5735 (240.0.0.0/4)。E 類是龐大的空間,有超過 2.68 億個 IP 位址可用,因此可長期支援您的成長。不過,E 類有一些限制。舉例來說,Windows 和部分地端部署硬體不支援這項功能。瞭解如何運用 E 類 IPv4 位址空間,緩解 GKE 中的 IPv4 耗盡問題。

使用 Cloud NAT 或 Private Service Connect

如果 Cloud Run 工作負載使用非 RFC 1918 範圍,且需要連至僅接受 RFC 1918 的地端部署目的地,請採用下列其中一種解決方案:

使用 IPv4 和 IPv6 (雙協定) 子網路

雖然將應用程式移至 IPv6 無法減少 IPv4 耗盡,但這是很好的第一步。設定雙堆疊資源,避免日後發生 IPv4 耗盡問題。

通訊埠耗盡減少策略

下一節將說明如何減少 Cloud Run 的通訊埠耗盡情形。

使用連線集區並重複使用連線

向單一目的地 IP 位址傳送大量要求時,請使用連線集區,維護及重複使用與目的地的連線。如果單一 IP 位址的連線率過高,可能會耗盡傳出通訊埠,並導致連線遭拒錯誤。

隔離傳出至網際網路的流量

根據預設,Cloud Run 會透過無伺服器工作負載共用的區域動態 IP 位址集區,傳送傳出網路流量。如果工作負載仰賴 IP 信譽,或會產生大量探測流量,請勿使用這個預設共用集區。

在下列情況下,請改用 --vpc-egress=all-traffic 設定直接虛擬私有雲輸出,並透過 Cloud NAT 轉送流量,使用專屬的靜態傳出 IP 位址:

  • 工作負載會連線至信譽敏感的外部端點,例如第三方網頁應用程式防火牆 (WAF) 後方的付款閘道、代管資料庫或合作夥伴 API。專屬靜態 IP 位址可防止共用集區中其他租戶的雜訊流量觸發外部 WAF 封鎖或 HTTP 403 錯誤。
  • 您的工作負載會執行授權網路掃描、通訊埠列舉、主機指紋辨識、安全漏洞探測、網路抓取或負載測試。透過預設共用 IP 集區執行這些工作負載會降低 IP 信譽,可能中斷其他客戶的服務,違反Google Cloud 使用限制政策,並可能導致 Google 限制或暫停您的工作負載。

透過 Cloud NAT 執行授權掃描或高連線工作負載時,請分配足夠的靜態 IP 位址,並設定通訊埠保留,以免通訊埠耗盡。

效能和處理量策略

本節說明可擴充的選項,用於改善網際網路和 Google 服務的網路效能和處理量。

使用第二代執行環境

如要讓 Cloud Run 服務發揮最佳網路效能,請在使用直連虛擬私有雲輸出功能轉送流量時,採用第二代執行環境。第二代環境提供更快的網路效能,尤其是在封包遺失的情況下。

您可以使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform 選取執行環境。

使用直連虛擬私有雲輸出,提高網路輸出處理量

如要提高網路輸出連線的處理量,請使用直連虛擬私有雲功能,透過虛擬私有雲網路轉送流量。建議您搭配使用第二代執行環境,如前所述。

範例 1:傳至網際網路的外部流量

如要將外部流量傳送至公開網際網路,請設定 --vpc-egress=all-traffic,透過虛擬私有雲網路轉送所有流量。採用這種方法時,您必須設定 Cloud NAT 才能連上公開網際網路。

如要啟用 Cloud Run,以便將 Cloud NAT 閘道用於 Public NAT 或 Private NAT,請參閱「Cloud NAT 直連虛擬私有雲輸出互動」。

範例 2:傳送至 Google API 的內部流量

如果您使用直連虛擬私有雲輸出功能,將流量傳送至 Cloud Storage 等 Google API,請選擇下列其中一個選項:

使用 Cloud Run 的預設 MTU 設定

搭配 Cloud Run 使用虛擬私有雲網路時,請勿變更其最大傳輸單位 (MTU) 設定。請改用預設 MTU (1,460 位元組)。

費用注意事項

為資源設定網路選項時,請考量下列事項:

  • 集中資源:盡可能將 Cloud Run 資源部署在與後端資料庫 (例如 Cloud SQL 或 Firestore) 和 Cloud Storage bucket 相同的區域。在同一區域內的 Google Cloud 資源之間移轉資料不收費。
  • 改用直連虛擬私有雲輸出:如要安全地將流量轉送至內部虛擬私有雲網路資源,建議您從無伺服器 VPC 存取連接器改用直連虛擬私有雲輸出。直連虛擬私有雲輸出功能可將資源調度率降至零,消除與連接器執行個體相關的基準運算負擔和閒置成本。
  • 使用 Cloud CDN:在 Cloud Run 資源前方放置 Cloud CDN,卸載靜態資產和高度可快取的內容。從邊緣提供資料,比直接從 Cloud Run 支付標準網際網路輸出費用便宜得多。
  • 監控網際網路 egress:傳入流量 (ingress) 一律免費,且每月可享有 1 GiB 的北美地區免費傳出網際網路資料移轉量。監控重點應放在跨區域界線或超出免費方案的傳出流量。

如要瞭解詳情,請參閱 Cloud Run 定價,或使用定價計算工具估算費用。

後續步驟