使用 Cloud Run 設定跨區域內部應用程式負載平衡器

本文說明如何使用 Cloud Run 部署跨區域內部應用程式負載平衡器。如要設定這項功能,請為負載平衡器使用無伺服器 NEG 後端。

雖然本文說明 Cloud Run 設定,但 Cloud Run 的無伺服器 NEG 可指向 Cloud Run 資源或 Cloud Run 函式 (第 2 代) 資源。

無伺服器 NEG 可讓您搭配負載平衡器使用 Cloud Run 服務。使用無伺服器 NEG 後端設定負載平衡器後,系統會將負載平衡器的要求轉送至 Cloud Run 後端。

跨區域負載平衡可提供備援功能,如果無法連上某個地區,系統會自動將流量轉移至其他地區。根據 Envoy 的位置,Proxy 流量會依下列方式分發至 Cloud Run 服務:

  • 如果多地區 Cloud Run 服務是在與 Envoy 相同的區域中設定,則會優先使用與 Envoy 位於相同區域的 NEG。只有在啟用異常值偵測功能且本機 NEG 處於不健康狀態時,流量才會傳送至備援區域。
  • 如果多區域 Cloud Run 服務未在與 Envoy 相同的區域中設定,流量會平均分配至所有 NEG。較近的 NEG 則不建議使用。
  • 如果啟用 Identity-Aware Proxy,系統只支援單一無伺服器 NEG。不過,您可以設定其他 Cloud Run 服務,但負載平衡器不會將任何流量傳送至這些服務。

事前準備

在您依循這份指南操作之前,請先熟悉以下概念:

部署 Cloud Run 服務

本頁的操作說明假設您已啟用 Cloud Run 服務。

如要使用本頁面中的範例,您可以參考任何 Cloud Run 快速入門導覽課程來部署 Cloud Run 服務。

如要防止從網際網路存取 Cloud Run 服務,請限制 internal 的入站連線。內部應用程式負載平衡器的流量視為內部流量。

將 Cloud Run 服務置於多個區域,有助於避免單一區域發生故障。如要在 REGION_AREGION_B 區域中部署 Cloud Run 服務,請執行下列指令:

gcloud

gcloud run deploy CLOUD_RUN_SERVICE_NAMEA \
   --platform=managed \
   --allow-unauthenticated \
   --ingress=internal \
   --region=REGION_A \
   --image=IMAGE_URLA
gcloud run deploy CLOUD_RUN_SERVICE_NAMEB \
   --platform=managed \
   --allow-unauthenticated \
   --ingress=internal \
   --region=REGION_B \
   --image=IMAGE_URLB

請記下您建立的服務名稱。本頁的其餘部分會說明如何設定負載平衡器,將要求轉送至這項服務。

設定 SSL 憑證資源

請按照下列步驟建立憑證管理工具 SSL 憑證資源:

建議使用 Google 代管的憑證。

權限

如要依照本指南的說明操作,您必須能在專案中建立執行個體與修改網路。您必須是專案擁有者或編輯者,或是必須具有以下所有 Compute Engine 身分與存取權管理角色

工作 必要角色
建立網路、子網路和負載平衡器元件 Compute 網路管理員
新增與移除防火牆規則 Compute 安全管理員
建立執行個體 Compute 執行個體管理員

詳情請參閱下列指南:

設定總覽

您可以按照下圖所述,設定跨區域內部應用程式負載平衡器:

跨區域內部應用程式負載平衡器與 Cloud Run 部署作業。
跨區域內部應用程式負載平衡器與 Cloud Run 部署作業 (按一下可放大)。

如圖所示,這個範例在 VPC 網路中建立跨區域內部應用程式負載平衡器,其中在 REGION_AREGION_B 區域中,分別有一個後端服務和兩個 Cloud Run 部署。

跨區域內部應用程式負載平衡器的設定方式如下:

  1. 具有下列子網路的虛擬私有雲網路:

    • 子網路 SUBNET_AREGION_A 中的 Proxy 專用子網路。
    • 子網路 SUBNET_BREGION_B 中的 Proxy 專用子網路。

    您必須在使用跨區域內部應用程式負載平衡器的虛擬私有雲網路的每個地區,建立僅限 Proxy 的子網路。該地區的僅限 Proxy 子網路會在該地區的所有跨區域內部應用程式負載平衡器之間共用。系統會從僅限 Proxy 的子網路中分配從負載平衡器傳送至服務後端的封包來源位址。在這個範例中,REGION_A 地區的僅限 Proxy 子網路的主要 IP 位址範圍為 10.129.0.0/23REGION_B 的主要 IP 位址範圍則為 10.130.0.0/23,這是建議的子網路大小。

  2. 防火牆規則,允許網路中僅限 Proxy 的子網路流量。也就是說,您需要新增一條規則,允許來自 10.129.0.0/2310.130.0.0/23 (這個範例中僅限 Proxy 的子網路範圍) 的 TCP 通訊埠 804438080 流量。

  3. 另一個健康狀態檢查探測器的防火牆規則。

  4. 高可用性設定,可為 REGION_AREGION_B 區域中的 Cloud Run 部署作業提供無伺服器後端。如果某個區域的後端發生故障,流量就會移轉至其他區域。

  5. 監控後端使用情況和健康狀態的全域後端服務。請務必在後端服務上啟用離群值偵測

  6. 全域網址對應,這項服務會剖析要求的網址,並根據要求網址的主機和路徑,將要求轉送至特定的後端服務。

  7. 全球目標 HTTP 或 HTTPS Proxy,這項服務會接收來自使用者的要求,並將其轉送至網址對應。如為 HTTPS,請設定地區安全資料傳輸層 (SSL) 憑證資源。如果您設定了 HTTPS 負載平衡,目標 Proxy 會使用 SSL 憑證來解密 SSL 流量。目標 Proxy 可使用 HTTP 或 HTTPS 將流量轉送至您的執行個體。

  8. 全域轉送規則,具有負載平衡器的內部 IP 位址,可將每個傳入要求轉送至目標 Proxy。

    與轉送規則相關聯的內部 IP 位址可以來自相同網路和區域中的任何子網路。請注意下列條件:

    • IP 位址可以 (但不必) 與後端執行個體群組位於相同的子網路。
    • IP 位址不得來自保留的僅限 Proxy 子網路,且其 --purpose 標記必須設為 GLOBAL_MANAGED_PROXY
    • 如果您想使用相同的內部 IP 位址搭配多個轉送規則,請將 IP 位址 --purpose 標記設為 SHARED_LOADBALANCER_VIP
  9. 選用:設定 DNS 轉送政策,類型為 GEO,將用戶端流量轉送至離用戶端最近的地區中負載平衡器 VIP。

設定網路和子網路

在虛擬私有雲網路中,針對已設定後端的每個區域設定子網路。此外,請在您要設定負載平衡器的每個區域中設定 proxy-only-subnet

這個範例會使用以下虛擬私人雲端網路、地區和子網路:

  • 聯播網。網路是名為 NETWORK自訂模式虛擬私人雲端網路

  • 後端子網路REGION_A 地區中名為 SUBNET_A 的子網路使用 10.1.2.0/24 做為其主要 IP 範圍。REGION_B 地區中名為 SUBNET_B 的子網路使用 10.1.3.0/24 做為其主要 IP 範圍。

  • Proxy 的子網路REGION_A 地區中名為 PROXY_SN_A 的子網路使用 10.129.0.0/23 做為其主要 IP 範圍。REGION_B 地區中名為 PROXY_SN_B 的子網路使用 10.130.0.0/23 做為其主要 IP 範圍。

跨區域內部應用程式負載平衡器可從 VPC 中的任何區域存取。因此,來自任何區域的用戶端都能在全球範圍內存取負載平衡器後端。

設定後端子網路

主控台

  1. 在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下「建立虛擬私有雲網路」

  3. 提供網路的「名稱」

  4. 在「子網路」部分,將「子網路建立模式」設為「自訂」

  5. 為負載平衡器的後端建立子網路。在「New subnet」(新的子網路) 區段中,輸入以下資訊:

    • 提供這個子網路的 [Name] (名稱)
    • 選取「區域」REGION_A
    • 輸入「IP 位址範圍」10.1.2.0/24
  6. 按一下 [完成]

  7. 按一下 [新增子網路]

  8. 為負載平衡器的後端建立子網路。在「New subnet」(新的子網路) 區段中,輸入以下資訊:

    • 提供這個子網路的 [Name] (名稱)
    • 選取「區域」REGION_B
    • 輸入「IP 位址範圍」10.1.3.0/24
  9. 按一下 [完成]

  10. 按一下 [建立]。

gcloud

  1. 使用 gcloud compute networks create 指令建立自訂虛擬私有雲網路:

    gcloud compute networks create NETWORK --subnet-mode=custom
    
  2. 使用 gcloud compute networks subnets create 指令,在 REGION_A 地區的 NETWORK 網路中建立子網路:

    gcloud compute networks subnets create SUBNET_A \
        --network=NETWORK \
        --range=10.1.2.0/24 \
        --region=REGION_A
    
  3. 使用 gcloud compute networks subnets create 指令,在 REGION_B 地區的 NETWORK 網路中建立子網路:

    gcloud compute networks subnets create SUBNET_B \
        --network=NETWORK \
        --range=10.1.3.0/24 \
        --region=REGION_B
    

API

networks.insert 方法提出 POST 要求。將 PROJECT_ID 替換為您的專案 ID。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks

{
 "routingConfig": {
   "routingMode": "regional"
 },
 "name": "NETWORK",
 "autoCreateSubnetworks": false
}

subnetworks.insert 方法提出 POST 要求。將 PROJECT_ID 替換為您的專案 ID。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks

{
 "name": "SUBNET_A",
 "network": "projects/PROJECT_ID/global/networks/NETWORK",
 "ipCidrRange": "10.1.2.0/24",
 "region": "projects/PROJECT_ID/regions/REGION_A",
}

subnetworks.insert 方法提出 POST 要求。將 PROJECT_ID 替換為您的專案 ID。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks

{
 "name": "SUBNET_B",
 "network": "projects/PROJECT_ID/global/networks/NETWORK",
 "ipCidrRange": "10.1.3.0/24",
 "region": "projects/PROJECT_ID/regions/REGION_B",
}

設定僅限 Proxy 的子網路

僅限 Proxy 子網路會提供一組 IP 位址, Google Cloud 用於代表您執行 Envoy Proxy。Proxy 會終止來自用戶端的連線,並建立連至後端的連線。

這個僅限 Proxy 的子網路會由與虛擬私有雲網路位於同一個區域的所有 Envoy 型區域負載平衡器使用。每個地區和每個網路只能有一個用於特定用途的活動的僅限 Proxy 子網路。

控制台

如果您使用的是 Google Cloud 主控台,可以等之後再於「負載平衡」頁面中建立僅限 Proxy 的子網路。

如果您現在想建立僅限 Proxy 的子網路,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下虛擬私有雲網路的名稱。
  3. 在「子網路」分頁中,按一下「新增子網路」
  4. 提供僅限 Proxy 子網路的「名稱」
  5. 在「Region」(區域) 清單中選取「REGION_A」。
  6. 在「用途」清單中,選取「跨區域的 Managed Proxy」
  7. 在「IP address range」欄位中輸入 10.129.0.0/23
  8. 按一下「新增」。

REGION_B 中建立僅限 Proxy 的子網路

  1. 按一下 [新增子網路]
  2. 提供僅限 Proxy 子網路的「名稱」
  3. 在「Region」(區域) 清單中選取「REGION_B」。
  4. 在「用途」清單中,選取「跨區域的 Managed Proxy」
  5. 在「IP address range」欄位中輸入 10.130.0.0/23
  6. 按一下「新增」。

gcloud

使用 gcloud compute networks subnets create 指令建立僅限 Proxy 的子網路。

    gcloud compute networks subnets create PROXY_SN_A \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION_A \
        --network=NETWORK \
        --range=10.129.0.0/23
    
    gcloud compute networks subnets create PROXY_SN_B \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION_B \
        --network=NETWORK \
        --range=10.130.0.0/23
    

API

使用 subnetworks.insert 方法建立僅限 Proxy 的子網路,並將 PROJECT_ID 替換為您的專案 ID。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks

    {
      "name": "PROXY_SN_A",
      "ipCidrRange": "10.129.0.0/23",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "region": "projects/PROJECT_ID/regions/REGION_A",
      "purpose": "GLOBAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
   
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks

    {
      "name": "PROXY_SN_B",
      "ipCidrRange": "10.130.0.0/23",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "region": "projects/PROJECT_ID/regions/REGION_B",
      "purpose": "GLOBAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
   

建立無伺服器網路端點群組 (NEG)

  1. 為 Cloud Run 服務建立無伺服器 NEG:

    gcloud compute network-endpoint-groups create gl7ilb-serverless-neg-a \
       --region=REGION_A \
       --network-endpoint-type=serverless  \
       --cloud-run-service=CLOUD_RUN_SERVICE_NAMEA
    
    gcloud compute network-endpoint-groups create gl7ilb-serverless-neg-b \
       --region=REGION_B \
       --network-endpoint-type=serverless  \
       --cloud-run-service=CLOUD_RUN_SERVICE_NAMEB
    

設定負載平衡器

從負載平衡器傳送至無伺服器 NEG 後端的流量,會使用在 VPC 外定義的特殊路徑,不受防火牆規則的約束。因此,如果負載平衡器只有無伺服器 NEG 後端,您就不需要建立防火牆規則,允許從僅限 Proxy 的子網路傳送至無伺服器後端的流量。

主控台

開始設定

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡) 頁面

  2. 點選「建立負載平衡器」
  3. 在「Type of load balancer」(負載平衡器類型)部分,選取「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後點選「Next」(下一步)
  4. 在「公開或內部」部分,選取「內部」,然後點選「下一步」
  5. 在「跨區域或單一區域部署」部分,選取「最適合跨區域工作負載」,然後點選「下一步」
  6. 按一下 [設定]

基本設定

  1. 提供負載平衡器的「名稱」
  2. 在「Network」(網路) 中選取 NETWORK

使用兩個轉送規則設定前端

HTTP:

  1. 按一下「前端設定」
    1. 提供轉送規則的「Name」(名稱)
    2. 在「子網路區域」清單中選取「REGION_A」。

      保留僅限 Proxy 的子網路

    3. 在「Subnetwork」(子網路) 清單中選取「SUBNET_A」。
    4. 在「IP address」清單中,按一下「Create IP address」。系統會開啟「保留靜態內部 IP 位址」頁面。
      • 為靜態 IP 位址提供「名稱」
      • 在「Static IP address」清單中,選取「Let me choose」
      • 在「Custom IP address」(自訂 IP 位址) 欄位中輸入 10.1.2.99
      • 選取「預訂」
  2. 按一下 [完成]
  3. 如要新增第二個轉寄規則,請按一下「新增前端 IP 和通訊埠」
    1. 提供轉送規則的「Name」(名稱)
    2. 在「子網路區域」清單中選取「REGION_B」。

      保留僅限 Proxy 的子網路

    3. 在「Subnetwork」(子網路) 清單中選取「SUBNET_B」。
    4. 在「IP address」清單中,按一下「Create IP address」。系統會開啟「保留靜態內部 IP 位址」頁面。
      • 為靜態 IP 位址提供「名稱」
      • 在「Static IP address」清單中,選取「Let me choose」
      • 在「Custom IP address」(自訂 IP 位址) 欄位中輸入 10.1.3.99
      • 選取「預訂」
  4. 按一下 [完成]

針對 HTTPS:

如果您在用戶端與負載平衡器間使用的是 HTTPS,則需要有一個或多個 SSL 憑證資源才能設定 Proxy。如要建立 all-regions Google 代管憑證,請參閱下列說明文件:

建立 Google 代管憑證後,請 將憑證直接附加至目標 Proxy。跨區域內部應用程式負載平衡器不支援憑證對應項目。

如要建立 all-regions 自行管理憑證,請參閱以下說明文件: 部署區域性自行管理憑證

  1. 按一下「前端設定」
    1. 提供轉送規則的「Name」(名稱)
    2. 在「Protocol」欄位中選取 HTTPS (includes HTTP/2)
    3. 確認「Port」(通訊埠) 已設為 443
    4. 在「子網路區域」清單中選取「REGION_A」。

      保留僅限 Proxy 的子網路

    5. 在「Subnetwork」(子網路) 清單中選取「SUBNET_A」。
    6. 在「IP address」清單中,按一下「Create IP address」。系統會開啟「保留靜態內部 IP 位址」頁面。
      • 為靜態 IP 位址提供「名稱」
      • 在「Static IP address」清單中,選取「Let me choose」
      • 在「Custom IP address」(自訂 IP 位址) 欄位中輸入 10.1.3.99
      • 選取「預訂」
    7. 在「新增憑證」部分中,選取憑證。
    8. 選用:如要新增主要 SSL 憑證以外的憑證,請按照下列指示操作:
      1. 按一下「新增憑證」
      2. 從清單中選取憑證。
    9. 從「SSL policy」清單中選取 SSL 政策。如果您尚未建立任何 SSL 政策,系統會套用預設 Google Cloud SSL 政策
    10. 按一下 [完成]

    新增第二個前端設定:

    1. 為前端設定提供名稱
    2. 在「Protocol」欄位中選取 HTTPS (includes HTTP/2)
    3. 確認「Port」(通訊埠) 已設為 443
    4. 在「子網路區域」清單中選取「REGION_B」。

      保留僅限 Proxy 的子網路

    5. 在「Subnetwork」(子網路) 清單中選取「SUBNET_B」。
    6. 在「IP address」清單中,按一下「Create IP address」。系統會開啟「保留靜態內部 IP 位址」頁面。
      • 為靜態 IP 位址提供「名稱」
      • 在「Static IP address」清單中,選取「Let me choose」
      • 在「Custom IP address」(自訂 IP 位址) 欄位中輸入 10.1.3.99
      • 選取「預訂」
    7. 在「新增憑證」部分中,選取憑證。
    8. 選用:如要新增主要 SSL 憑證以外的憑證,請按照下列指示操作:
      1. 按一下「新增憑證」
      2. 從清單中選取憑證。
    9. 從「SSL policy」清單中選取 SSL 政策。如果您尚未建立任何 SSL 政策,系統會套用預設 Google Cloud SSL 政策
    10. 按一下 [完成]
    設定後端服務
    1. 按一下「後端設定」
    2. 在「Create or select backend services」清單中,按一下「Create a backend service」
    3. 為後端服務提供「Name」(名稱)
    4. 在「通訊協定」部分選取「HTTP」
    5. 在「Named Port」(已命名的通訊埠) 中輸入 http
    6. 在「Backend type」清單中,選取「Serverless network endpoint group」
    7. 在「New backend」專區中:
      • 在「無伺服器網路端點群組」清單中,選取 gl7ilb-serverless-neg-a
      • 按一下 [完成]
      • 如要新增其他後端,請按一下「新增後端」
      • 在「無伺服器網路端點群組」清單中,選取 gl7ilb-serverless-neg-b
      • 按一下 [完成]

    設定轉送規則

    1. 按一下「轉送規則」
    2. 在「Mode」中,選取「Simple host and path rule」
    3. 確認任何不相符主機和路徑都只有一個後端服務。

    檢查設定

    1. 按一下「檢查並完成」
    2. 查看負載平衡器設定。
    3. 按一下 [建立]。

gcloud

  1. 使用 gcloud compute backend-services create 指令定義後端服務。

    gcloud compute backend-services create gil7-backend-service \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --global
    
  2. 使用 gcloud compute backend-services add-backend 指令,將後端新增到後端服務。

    gcloud compute backend-services add-backend gil7-backend-service \
      --network-endpoint-group=gl7ilb-serverless-neg-a \
      --network-endpoint-group-region=REGION_A \
      --global
    
    gcloud compute backend-services add-backend gil7-backend-service \
      --network-endpoint-group=gl7ilb-serverless-neg-b \
      --network-endpoint-group-region=REGION_B \
      --global
    
  3. 使用 gcloud compute url-maps create 指令建立網址對應。

    gcloud compute url-maps create gil7-map \
      --default-service=gil7-backend-service \
      --global
    
  4. 建立目標 Proxy。

    HTTP:

    使用 gcloud compute target-http-proxies create 指令建立目標 Proxy。

    gcloud compute target-http-proxies create gil7-http-proxy \
      --url-map=gil7-map \
      --global
    

    適用於 HTTPS:

    如要建立 Google 代管的憑證,請參閱下列說明文件:

    建立 Google 代管憑證後,請直接將憑證附加至目標 Proxy。跨區域內部應用程式負載平衡器不支援憑證對應項目。

    如要建立自行管理的憑證,請參閱下列說明文件:

    將檔案路徑指派給變數名稱。

    export LB_CERT=PATH_TO_PEM_FORMATTED_FILE
    
    export LB_PRIVATE_KEY=PATH_TO_LB_PRIVATE_KEY_FILE
    

    使用 gcloud certificate-manager certificates create 指令建立全區域 SSL 憑證。

    gcloud certificate-manager certificates create gilb-certificate \
      --private-key-file=$LB_PRIVATE_KEY \
      --certificate-file=$LB_CERT \
      –-scope=all-regions
    

    使用 SSL 憑證,透過 gcloud compute target-https-proxies create 指令建立目標 Proxy

    gcloud compute target-https-proxies create gil7-https-proxy \
      --url-map=gil7-map \
      --certificate-manager-certificates=gilb-certificate
    
  5. 建立兩個轉送規則:一個在 REGION_B 區域中使用 VIP (10.1.2.99),另一個在 REGION_A 區域中使用 VIP (10.1.3.99)。

    如果是自訂網路,您必須參照轉送規則中的子網路。請注意,這是虛擬機器 (VM) 執行個體子網路,而不是 Proxy 子網路。

    HTTP:

    使用 gcloud compute forwarding-rules create 指令,並加上正確的旗標。

    gcloud compute forwarding-rules create gil7-forwarding-rule-a \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_B \
      --subnet-region=REGION_B \
      --address=10.1.3.99 \
      --ports=80 \
      --target-http-proxy=gil7-http-proxy \
      --global
    
    gcloud compute forwarding-rules create gil7-forwarding-rule-b \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_A \
      --subnet-region=REGION_A \
      --address=10.1.2.99 \
      --ports=80 \
      --target-http-proxy=gil7-http-proxy \
      --global
    

    適用於 HTTPS:

    使用 gcloud compute forwarding-rules create 指令搭配正確的旗標建立轉送規則。

    gcloud compute forwarding-rules create gil7-forwarding-rule-a \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_B \
      --address=10.1.3.99 \
      --ports=443 \
      --target-https-proxy=gil7-https-proxy \
      --global
    
    gcloud compute forwarding-rules create gil7-forwarding-rule-b \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_A \
      --address=10.1.2.99 \
      --ports=443 \
      --target-https-proxy=gil7-https-proxy \
      --global
    

API

請對 backendServices.insert 方法提出 POST 要求,並將 PROJECT_ID 替換為您的專案 ID,藉此建立全域後端服務。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices

{
"name": "gil7-backend-service",
"backends": [
  {
    "group": "projects/PROJECT_ID/zones/ZONE_A/instanceGroups/gl7ilb_serverless_negwest",
    "balancingMode": "UTILIZATION"
  },
  {
    "group": "projects/PROJECT_ID/zones/ZONE_B/instanceGroups/gl7ilb_serverless_negeast",
  }
],
"loadBalancingScheme": "INTERNAL_MANAGED"
}

請向 urlMaps.insert 方法提出 POST 要求,並將 PROJECT_ID 替換為您的專案 ID,藉此建立網址對應。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps

{
"name": "l7-ilb-map",
"defaultService": "projects/PROJECT_ID/global/backendServices/gil7-backend-service"
}

HTTP

請對 targetHttpProxies.insert 方法提出 POST 要求,並將 PROJECT_ID 替換為您的專案 ID,藉此建立目標 HTTP Proxy。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpProxy

{
"name": "l7-ilb-proxy",
"urlMap": "projects/PROJECT_ID/global/urlMaps/l7-ilb-map"
}

請對 globalforwardingRules.insert 方法提出 POST 要求,並將 PROJECT_ID 替換為您的專案 ID,藉此建立轉送規則。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules

{
"name": "gil7-forwarding-rule-a",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"portRange": "80-80",
"target": "projects/PROJECT_ID/global/targetHttpProxies/l7-ilb-proxy",
"loadBalancingScheme": "INTERNAL_MANAGED",
"subnetwork": "projects/PROJECT_ID/regions/REGION_A/subnetworks/SUBNET_A",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"networkTier": "PREMIUM"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules

{
"name": "gil7-forwarding-rule-b",
"IPAddress": "10.1.3.99",
"IPProtocol": "TCP",
"portRange": "80-80",
"target": "projects/PROJECT_ID/global/targetHttpProxies/l7-ilb-proxy",
"loadBalancingScheme": "INTERNAL_MANAGED",
"subnetwork": "projects/PROJECT_ID/regions/REGION_B/subnetworks/SUBNET_B",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"networkTier": "PREMIUM"
}

適用於 HTTPS

讀取憑證和私密金鑰檔案,然後建立 SSL 憑證。以下範例說明如何使用 Python 執行這項操作。

請對 targetHttpsProxies.insert 方法提出 POST 要求,並將 PROJECT_ID 替換為您的專案 ID,藉此建立目標 HTTPS Proxy。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxy

{
"name": "l7-ilb-proxy",
"urlMap": "projects/PROJECT_ID/global/urlMaps/l7-ilb-map",
"sslCertificates": /projects/PROJECT_ID/global/sslCertificates/SSL_CERT_NAME
}

請對 globalForwardingRules.insert 方法提出 POST 要求,並將 PROJECT_ID 替換為您的專案 ID,藉此建立轉送規則。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules

{
"name": "gil7-forwarding-rule-a",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"portRange": "80-80",
"target": "projects/PROJECT_ID/global/targetHttpsProxies/l7-ilb-proxy",
"loadBalancingScheme": "INTERNAL_MANAGED",
"subnetwork": "projects/PROJECT_ID/regions/REGION_A/subnetworks/SUBNET_A",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"networkTier": "PREMIUM"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules

{
"name": "gil7-forwarding-rule-b",
"IPAddress": "10.1.3.99",
"IPProtocol": "TCP",
"portRange": "80-80",
"target": "projects/PROJECT_ID/global/targetHttpsProxies/l7-ilb-proxy",
"loadBalancingScheme": "INTERNAL_MANAGED",
"subnetwork": "projects/PROJECT_ID/regions/REGION_B/subnetworks/SUBNET_B",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"networkTier": "PREMIUM"
}

測試負載平衡器

負載平衡服務已在執行中,您可以將流量傳送至轉送規則,並觀察流量是否分散到不同的執行個體。

設定防火牆規則

這個範例需要為測試用戶端 VM 建立 fw-allow-ssh 防火牆規則。fw-allow-ssh 是輸入規則,適用於測試用戶端 VM,可在 TCP 通訊埠 22 上允許來自任何位址的連入 SSH 連線。您可以為這項規則選擇較嚴格的來源 IP 位址範圍;例如,您可以僅指定要從其中啟動 SSH 工作階段之系統的 IP 位址範圍。本範例使用目標標記 allow-ssh

gcloud

  1. 建立 fw-allow-ssh 防火牆規則,允許與具有 allow-ssh 網路標記的 VM 建立 SSH 連線。若省略 source-ranges,Google Cloud 會將規則解讀為任何來源

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

建立 VM 執行個體來測試連線能力

  1. 建立用戶端 VM:

    gcloud compute instances create l7-ilb-client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=NETWORK \
        --subnet=SUBNET_A \
        --zone=ZONE_A \
        --tags=allow-ssh
    
    gcloud compute instances create l7-ilb-client-b \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=NETWORK \
        --subnet=SUBNET_B \
        --zone=ZONE_B \
        --tags=allow-ssh
    
  2. 使用 SSH 連線至每個用戶端執行個體。

    gcloud compute ssh l7-ilb-client-a \
       --zone=ZONE_A
    
    gcloud compute ssh l7-ilb-client-b \
       --zone=ZONE_B
    
  3. 確認 IP 位址是否提供主機名稱。

    • 確認用戶端 VM 可連上這兩個 IP 位址。指令成功執行,並傳回處理要求的後端 VM 名稱:

      HTTP 測試:

      curl 10.1.2.99
      
      curl 10.1.3.99
      

      HTTPS 測試:

      curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:10.1.2.99:443
      
      curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:10.1.3.99:443
      

      DOMAIN_NAME 替換為應用程式網域名稱,例如 test.example.com

      -k 標記會讓 curl 略過憑證驗證。

    • 選用:使用已設定的 DNS 記錄解析 IP 位址。

      curl service.example.com
      

執行 100 個要求並確認它們可達到負載平衡

HTTP

  {
    RESULTS=
    for i in {1..100}
    do
      RESULTS="$RESULTS:$(curl --silent 10.1.2.99)"
    done
    echo ""
    echo " Results of load-balancing to 10.1.2.99: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
  }
  

  {
    RESULTS=
    for i in {1..100}
    do
      RESULTS="$RESULTS:$(curl --silent 10.1.3.99)"
    done
    echo ""
    echo " Results of load-balancing to 10.1.3.99: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
  }
  

適用於 HTTPS

DOMAIN_NAME 替換為應用程式網域名稱,例如 test.example.com

  {
    RESULTS=
    for i in {1..100}
    do
      RESULTS="$RESULTS:$(curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:10.1.2.99:443)"
    done
    echo ""
    echo " Results of load-balancing to 10.1.2.99: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
  }
  

  {
    RESULTS=
    for i in {1..100}
    do
        RESULTS="$RESULTS:$(curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:10.1.3.99:443)"
    done
    echo ""
    echo " Results of load-balancing to 10.1.3.99: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
  }
  

測試容錯移轉

  1. REGION_B 區域中的後端處於不健康狀態或無法連線時,請驗證是否會將後端移轉至 REGION_A 區域。我們模擬此情況,方法是從 REGION_B 移除所有後端:

    gcloud compute backend-services remove-backend gil7-backend-service \
       --network-endpoint-group=gl7ilb-serverless-neg-b \
       --network-endpoint-group-zone=ZONE_B
    
  2. 使用 SSH 連線至 REGION_B 中的用戶端 VM。

    gcloud compute ssh l7-ilb-client-b \
       --zone=ZONE_B
    
  3. 將要求傳送至 REGION_B 區域中的負載平衡 IP 位址。指令輸出內容會顯示 REGION_A 中後端 VM 的回應。

    DOMAIN_NAME 替換為應用程式網域名稱,例如 test.example.com

    {
    RESULTS=
    for i in {1..100}
    do
      RESULTS="$RESULTS:$(curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:10.1.3.99:443)"
    done
    echo "***"
    echo "*** Results of load-balancing to 10.1.3.99: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
    }
    

額外設定選項

本節會延伸說明設定範例,並提供替代和其他設定選項。所有工作都是選填項目。您可以按任何順序執行這些工作。

使用網址遮罩

建立無伺服器 NEG 時,您可以使用網址遮罩指向位於同一網域的多個服務,而非選取特定 Cloud Run 服務。網址遮罩是網址架構的範本。無伺服器 NEG 會使用這個範本,從傳入要求的網址中擷取服務名稱,並將要求對應至適當的服務。

如果您的服務對應至自訂網域,而非 Google Cloud 為已部署服務提供的預設位址,網址遮罩就特別實用。即使應用程式使用自訂網址模式,您也可以透過單一規則指定多個服務和版本。

如果您尚未閱讀,請務必參閱 Serverless NEGS 總覽:網址遮罩

建構網址遮罩

如要為負載平衡器建構網址遮罩,請先從服務的網址開始。本範例使用在 https://example.com/login 上執行的無伺服器應用程式範例。這是應用程式 login 服務的網址。

  1. 從網址中移除 httphttps。您還剩下 example.com/login
  2. 將服務名稱替換為網址遮罩的預留位置。
    • Cloud Run:將 Cloud Run 服務名稱替換為預留位置 <service>。如果 Cloud Run 服務有相關聯的標記,請將標記名稱替換為預留位置 <tag>。在本範例中,您剩下的網址遮罩是 example.com/<service>
  3. 選用:如果服務名稱可從網址的路徑部分擷取,則可省略網域。網址遮罩的路徑部分會以第一個斜線 (/) 字元做為區別。如果網址遮罩中沒有斜線 (/),系統會將遮罩視為僅代表主機。因此,在本例中,網址遮罩可縮減為 /<service>

    同樣地,如果 <service> 可從網址的代管端部分擷取,您可以從網址遮罩中完全省略路徑。

    您也可以省略第一個預留位置前面的任何主機或子網域元件,以及最後一個預留位置後面的任何路徑元件。在這種情況下,預留位置會擷取元件所需的資訊。

以下列舉幾個示例說明這些規則:

本表假設您有一個名為 example.com 的自訂網域,且所有 Cloud Run 服務都對應至這個網域

服務、標記名稱 Cloud Run 自訂網域網址 網址遮罩
service: login https://login-home.example.com/web <service>-home.example.com
service: login https://example.com/login/web example.com/<service> 或 /<service>
service: login, tag: test https://test.login.example.com/web <tag>.<service>.example.com
service: login, tag: test https://example.com/home/login/test example.com/home/<service>/<tag> 或 /home/<service>/<tag>
service: login, tag: test https://test.example.com/home/login/web <tag>.example.com/home/<service>

使用網址遮罩建立無伺服器 NEG

主控台

如要使用新的負載平衡器,您可以使用本文件先前所述的端對端程序。設定後端服務時,請輸入網址遮罩,而非選取特定服務。

如果您有現有的負載平衡器,可以編輯後端設定,讓無伺服器 NEG 指向網址遮罩,而非特定服務。

如要將以網址遮罩為基礎的無伺服器 NEG 新增至現有的後端服務,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
    前往「負載平衡」
  2. 按一下負載平衡器的名稱,該負載平衡器含有您要編輯的後端服務。
  3. 在「Load balancer details」(負載平衡器詳細資料) 頁面中,按一下 「Edit」(編輯)
  4. 在「Edit global external Application Load Balancer」(編輯全域外部應用程式負載平衡器) 頁面上,按一下「Backend configuration」(後端設定)
  5. 在「Backend configuration」(後端設定) 頁面上,針對要修改的後端服務,點選 「Edit」(編輯)
  6. 點選「新增後端」
  7. 選取「建立無伺服器網路端點群組」
    1. 在「Name」 中輸入 helloworld-serverless-neg
    2. 「Region」下方會顯示負載平衡器的地區。
    3. 在「無伺服器網路端點群組類型」下方, Cloud Run 是唯一支援的網路端點群組類型。
      1. 選取「使用網址遮罩」
      2. 輸入網址遮罩。如要瞭解如何建立網址遮罩,請參閱「建構網址遮罩」一文。
      3. 按一下 [建立]。

  8. 在「New backend」中,按一下「Done」
  9. 按一下「更新」

gcloud

如要使用 example.com/<service> 的範例網址遮罩建立無伺服器 NEG,請按照下列步驟操作:

gcloud compute network-endpoint-groups create SERVERLESS_NEG_MASK_NAME \
    --region=REGION \
    --network-endpoint-type=serverless \
    --cloud-run-url-mask="example.com/<service>"

在多個內部轉送規則之間使用相同的 IP 位址

如要讓多個內部轉送規則共用相同的內部 IP 位址,您必須保留 IP 位址,並將其 --purpose 旗標設為 SHARED_LOADBALANCER_VIP

gcloud

gcloud compute addresses create SHARED_IP_ADDRESS_NAME \
    --region=REGION \
    --subnet=SUBNET_NAME \
    --purpose=SHARED_LOADBALANCER_VIP
如果您需要將 HTTP 流量重新導向至 HTTPS,可以建立兩個使用共用 IP 位址的轉送規則。詳情請參閱「為內部應用程式負載平衡器設定 HTTP 至 HTTPS 重新導向」。

設定 DNS 轉送政策

如果您的用戶端位於多個區域,建議您使用這些區域中的 VIP,讓跨區域內部應用程式負載平衡器可供存取。這種多區域設定可盡量減少延遲時間和網路傳輸費用。此外,您還可以設定以 DNS 為基礎的全域負載平衡解決方案,以便在地區性服務中斷時提供復原能力。詳情請參閱「管理 DNS 轉送政策和健康狀態檢查」。

gcloud

如要建立 TTL 為 30 秒的 DNS 項目,請使用 gcloud dns record-sets create 指令

gcloud dns record-sets create DNS_ENTRY --ttl="30" \
  --type="A" --zone="service-zone" \
  --routing-policy-type="GEO" \
  --routing-policy-data="REGION_A=gil7-forwarding-rule-a@global;REGION_B=gil7-forwarding-rule-b@global" \
  --enable-health-checking

更改下列內容:

  • DNS_ENTRY:記錄組的 DNS 或網域名稱

    例如 service.example.com

  • REGION_AREGION_B:您設定負載平衡器的區域

API

ResourceRecordSets.create 方法發出 POST 要求,即可建立 DNS 記錄。將 PROJECT_ID 替換為您的專案 ID。

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/SERVICE_ZONE/rrsets
{
  "name": "DNS_ENTRY",
  "type": "A",
  "ttl": 30,
  "routingPolicy": {
    "geo": {
      "items": [
        {
          "location": "REGION_A",
          "healthCheckedTargets": {
            "internalLoadBalancers": [
              {
                "loadBalancerType": "globalL7ilb",
                "ipAddress": "IP_ADDRESS",
                "port": "80",
                "ipProtocol": "tcp",
                "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
                "project": "PROJECT_ID"
              }
            ]
          }
        },
        {
          "location": "REGION_B",
          "healthCheckedTargets": {
            "internalLoadBalancers": [
              {
                "loadBalancerType": "globalL7ilb",
                "ipAddress": "IP_ADDRESS_B",
                "port": "80",
                "ipProtocol": "tcp",
                "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
                "project": "PROJECT_ID"
              }
            ]
          }
        }
      ]
    }
  }
}

啟用離群值偵測

您可以在全球後端服務上啟用異常值偵測功能,以便找出無伺服器 NEG 異常情形,並減少傳送至無伺服器 NEG 異常值的請求數量。

您可以使用下列其中一種方法,在後端服務中啟用異常值偵測功能:

  • consecutiveErrors 方法 (outlierDetection.consecutiveErrors),其中 5xx 系列 HTTP 狀態碼視為錯誤。
  • consecutiveGatewayFailure 方法 (outlierDetection.consecutiveGatewayFailure),其中只有 502503504 HTTP 狀態碼可視為錯誤。

請按照下列步驟,為現有後端服務啟用異常值偵測功能。請注意,即使啟用異常值偵測功能,某些要求仍可能會傳送至不健康的服務,並傳回 5xx 狀態碼給用戶端。如要進一步降低錯誤率,您可以為異常值偵測參數設定更積極的值。詳情請參閱 outlierDetection 欄位

主控台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「負載平衡」

  2. 按一下您要編輯後端服務的負載平衡器名稱。

  3. 在「Load balancer details」(負載平衡器詳細資料) 頁面中,按一下 「Edit」(編輯)

  4. 在「Edit cross-region internal Application Load Balancer」(編輯跨區域內部應用程式負載平衡器) 頁面上,按一下「Backend configuration」(後端設定)

  5. 在「Backend configuration」(後端設定) 頁面上,針對要修改的後端服務,按一下 「Edit」(編輯)

  6. 向下捲動並展開「進階設定」部分。

  7. 在「異常值偵測」部分,勾選「啟用」核取方塊。

  8. 按一下 「Edit」 來設定異常值偵測功能。

    確認下列選項已設為指定的值:

    屬性
    連續錯誤 5
    間隔 1000
    基礎排除時間 30000
    排除百分比上限 50
    強制執行連續錯誤 100

    在本範例中,系統每秒執行一次異常值偵測分析。如果 Envoy Proxy 收到的連續 HTTP 5xx 狀態碼數量達到五個以上,後端端點就會從該 Envoy Proxy 的負載平衡集區中移除 30 秒。當強制百分比設為 100% 時,後端服務會在每次執行異常情況偵測分析時,強制從特定 Envoy Proxy 的負載平衡集區中,將不健康的端點彈出。如果符合排除條件,最多可從負載平衡集區中排除 50% 的後端端點。

  9. 按一下 [儲存]

  10. 如要更新後端服務,請按一下「更新」

  11. 如要更新負載平衡器,請在「Edit cross-region internal Application Load Balancer」(編輯跨區域內部應用程式負載平衡器) 頁面上,按一下「Update」(更新)

gcloud

  1. 將後端服務匯出為 YAML 檔案。

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
      --destination=BACKEND_SERVICE_NAME.yaml --global
    

    BACKEND_SERVICE_NAME 替換為後端服務名稱。

  2. 編輯後端服務的 YAML 設定,新增異常值偵測欄位,如下列 YAML 設定中 outlierDetection 部分所示:

    在本範例中,系統每秒執行一次異常值偵測分析。如果 Envoy Proxy 收到的連續 HTTP 5xx 狀態碼數量達到五個以上,後端端點就會從該 Envoy Proxy 的負載平衡集區中移除 30 秒。當強制百分比設為 100% 時,後端服務會在每次執行異常情況偵測分析時,強制從特定 Envoy Proxy 的負載平衡集區中,將不健康的端點彈出。如果符合排除條件,最多可從負載平衡集區中排除 50% 的後端端點。

    name: BACKEND_SERVICE_NAME
    backends:
    - balancingMode: UTILIZATION
      capacityScaler: 1.0
      group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/networkEndpointGroups/SERVERLESS_NEG_NAME
    - balancingMode: UTILIZATION
      capacityScaler: 1.0
      group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/networkEndpointGroups/SERVERLESS_NEG_NAME_2
    outlierDetection:
      baseEjectionTime:
        nanos: 0
        seconds: 30
      consecutiveErrors: 5
      enforcingConsecutiveErrors: 100
      interval:
        nanos: 0
        seconds: 1
      maxEjectionPercent: 50
    port: 80
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME
    sessionAffinity: NONE
    timeoutSec: 30
    ...
    

    更改下列內容:

    • BACKEND_SERVICE_NAME:後端服務名稱
    • PROJECT_ID:專案 ID
    • REGION_AREGION_B:負載平衡器已設定的區域。
    • SERVERLESS_NEG_NAME:第一個無伺服器 NEG 的名稱
    • SERVERLESS_NEG_NAME_2:第二個無伺服器 NEG 的名稱
  3. 匯入最新設定,更新後端服務。

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
      --source=BACKEND_SERVICE_NAME.yaml --global
    

    後端服務現在已啟用離群值偵測功能。

刪除無伺服器網路端點群組 (NEG)

如果已將網路端點群組附加至後端服務,則無法予以刪除。刪除 NEG 之前,請確保已將其從後端服務卸離。

主控台

  1. 如要確認要刪除的無伺服器 NEG 並未由任何後端服務使用,請前往「負載平衡元件」頁面,然後點選「後端服務」分頁。
    前往「後端服務」
  2. 如果正在使用無伺服器 NEG,請執行下列操作:
    1. 按一下使用無伺服器 NEG 的後端服務名稱。
    2. 按一下「編輯」圖示
    3. 在「Backends」(後端) 清單中,按一下 ,即可從後端服務中移除無伺服器 NEG 後端。
    4. 按一下 [儲存]

  3. 前往 Google Cloud 主控台的「Network Endpoint Group」(網路端點群組) 頁面。
    前往網路端點群組
  4. 找出要刪除的無伺服器 NEG,然後勾選對應的核取方塊。
  5. 點選「刪除」。
  6. 再按一下 [刪除] 加以確認。

gcloud

如要從後端服務移除無伺服器 NEG,您必須指定 NEG 建立的地區。

gcloud compute backend-services remove-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=SERVERLESS_NEG_NAME \
    --network-endpoint-group-region=REGION \
    --region=REGION

如要刪除無伺服器 NEG,請按照下列步驟操作:

gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \
    --region=REGION

後續步驟