搭配虛擬私有雲網路使用直接虛擬私有雲輸出

您可以使用直接虛擬私有雲輸出功能,啟用 Cloud Run 服務或工作,將流量傳送至虛擬私有雲網路,且無須使用無伺服器虛擬私有雲存取連接器。

事前準備

限制

下列限制適用於 Cloud Run 服務和工作:

  • Cloud Run 支援每個個別執行個體最高 1 Gbps 的總處理量。超過這個數量時,系統就會限制效能。
  • Cloud Run 使用量配額會限制您可設定的執行個體數量上限,以便使用直接虛擬私有雲輸出流量。每個 Cloud Run 修訂版本或工作執行作業都會設定上限。如要提高預設限制,請參閱如何提高配額

  • 在網路基礎架構維護事件期間,Cloud Run 服務和工作可能會發生連線中斷的情形。建議您使用可處理偶發連線重設問題的用戶端程式庫。
  • 內部 IPv6 流量的直接 VPC 出口僅在預先發布版中提供。
  • Private NAT 僅適用於預先發布版。

直接 VPC 出口不支援下列項目:

  • 虛擬私有雲流程記錄不會提供 Cloud Run 服務或修訂版本的名稱。
  • 非 VM 資源 (例如 Cloud Run 或內部部署機器) 不會回報虛擬私有雲流程記錄。
  • 封包鏡像
  • Network Intelligence Center,包括 Connectivity Tests
  • 透過虛擬私有雲網路傳送的外部 IPv6 流量
  • 輸入防火牆規則中的網路標記服務身分
  • 防火牆規則無法使用附加至 Cloud Run 工作負載的 Resource Manager 標記。
  • 執行時間超過 1 小時的 Cloud Run 工作可能會發生連線中斷情形。這些錯誤可能發生在維護事件期間,也就是從一台機器將工作遷移至另一台機器的過程中。容器會在事件發生前 10 秒收到 SIGTSTP 信號,並在事件發生後收到 SIGCONT 信號。容器收到 SIGCONT 信號後,請重試連線。

IP 位址分配

如要將 Cloud Run 服務或工作放置在 VPC 網路中,您必須指定網路和子網路。Cloud Run 會從子網路中分配 IP 位址。

IP 位址是臨時性的,因此請勿根據個別 IP 建立政策。如果您需要根據 IP 建立政策 (例如防火牆規則),則必須使用整個子網路的 IP 位址範圍。

如要變更服務或工作所使用的網路或子網路,請部署新的服務修訂版本,或執行使用新網路和子網路值的新工作任務。

擴大及縮減規模

為在流量激增期間加快擴充,Cloud Run 會一次保留 16 個區塊 (28 子網路遮罩) 的 IP 位址。查看 Cloud Run 已分配的 IP 位址。為確保您在 Cloud Run 中使用足夠的 IPv4 位址,子網路的 IPv4 位址範圍必須為 /26 或更大。

為提高 IP 配置效率並便於管理,請將多個資源放在同一個子網路中。如果您的 IPv4 位址空間有限,請參閱「支援的 IPv4 範圍」一文,瞭解更多選項。

如要刪除子網路,您必須先刪除或重新部署 Cloud Run 服務或工作,停止使用子網路,然後等待 1 到 2 小時。

服務的 IP 位址用量

在穩定狀態下,Cloud Run 會使用 2 倍 (2X) 的 IP 位址,以對應執行個體數量。當修訂版本縮減時,Cloud Run 會保留 IP 位址最多 20 分鐘。總共至少要預留 2 倍的 IP 位址數量,再加上用於因應修訂更新的緩衝區。

舉例來說,如果您升級修訂版本,讓 revision 1 從 100 個執行個體縮減至零,而 revision 2 從零縮減至 100,Cloud Run 會在縮減後保留 revision 1 IP 位址,最多 20 分鐘。在 20 分鐘的保留期間,您必須保留至少 400 個 IP 位址 ((100 + 100) * 2)。

工作 IP 用量

針對 Cloud Run 工作,每項工作會在執行期間和完成後的 7 分鐘內,占用 1 個 IP 位址。請確認子網路足夠大,可容納所有並行執行的工作任務,並保留最少 /26 子網路。

例如:

  • 每天執行的單一工作,且在下次執行前至少會提前 7 分鐘完成,在子網路中最多會使用 1 個 IP 位址。
  • 每 10 分鐘執行 10 項工作的工作,每項工作執行 15 分鐘,每項工作會使用 1 個 IP 位址 22 分鐘 (3 次執行作業會同時使用 IP 位址),如以下範例所示。因此,工作會在穩定狀態下耗用 30 個 IP 位址。
  • 單一工作需要 1 分鐘才能執行完畢,且每分鐘執行 100 次,因此需要約 800 個 IP 位址 (視執行的確切時間而定)。

支援的 IPv4 範圍

Cloud Run 支援下列 IPv4 範圍的子網路:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • 級別 E
    • 240.0.0.0/4

設定身分與存取權管理權限

請使用下列任一方法,確保 Cloud Run 可存取虛擬私有雲網路:

  • Cloud Run 服務代理角色:根據預設,Cloud Run 服務代理會具備包含必要權限的 Cloud Run 服務代理角色 (roles/run.serviceAgent)

  • 自訂權限:如要更精細地控管,請授予 Cloud Run 服務代理以下額外專案權限:

    • compute.networks.get
    • compute.subnetworks.get
    • 專案或特定子網路的 compute.subnetworks.use
    • compute.addresses.get
    • compute.addresses.list
    • compute.addresses.createInternal
    • compute.addresses.deleteInternal
    • compute.regionOperations.get
  • Compute 網路使用者角色:如果您不使用預設的 Cloud Run Service Agent 角色或自訂權限,請執行下列指令,為 Cloud Run Service Agent 服務帳戶授予Compute 網路使用者角色 (roles/compute.networkUser)

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
    --role "roles/compute.networkUser"

    更改下列內容:

    • PROJECT_ID:專案 ID。
    • PROJECT_NUMBER:部署 Cloud Run 服務或工作所在的專案編號。

部署服務

直接虛擬私有雲輸出可讓 Cloud Run 服務在沒有無伺服器虛擬私有雲存取連接器的情況下,將流量傳送至虛擬私有雲網路。網路費用會隨著服務的調度率降至零。您也可以直接在 Cloud Run 服務修訂版本上新增網路標記,以便實施更精細的網路安全性,例如套用 VPC 防火牆規則

您可以使用Google Cloud 主控台、Google Cloud CLI、YAML 或 Terraform,為服務設定直接 VPC 出口。

控制台

  1. 前往 Cloud Run

  2. 如果您要設定要部署至的新服務,請按一下「Create Service」。如果您要設定及部署現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

  3. 如果您要設定新的服務,請視需要填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。

  4. 按一下 [網路] 分頁標籤。

  5. 按一下「連線至虛擬私有雲,以傳出流量」

  6. 按一下「直接將流量傳送至虛擬私有雲」

  7. 在「Network」(網路) 欄位中,選取要傳送流量的 VPC 網路。

  8. 在「Subnet」(子網路)欄位中,選取服務接收 IP 位址的子網路。您可以在同一個子網路中部署多項服務。

  9. 選用:輸入要與服務相關聯的網路標記名稱。網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如 network-tag-2

  10. 在「Traffic routing」(流量路由) 部分,選取下列其中一個選項:

    • 僅將傳至私人 IP 的要求轉送至虛擬私有雲,這樣系統就只會透過 VPC 網路傳送流量至內部位址。
    • 將所有流量轉送至虛擬私有雲,透過虛擬私有雲網路傳送所有出站流量。
  11. 按一下 [Create] (建立) 或 [Deploy] (部署)

  12. 如要確認服務位於虛擬私有雲網路中,請按一下服務,然後點選「Networking」分頁標籤。網路和子網路會列在「VPC」VPC資訊卡中。

    您現在可以根據防火牆規則,從 Cloud Run 服務傳送要求至 VPC 網路上的任何資源。

gcloud

如要透過 Google Cloud CLI 部署不含連接器的 Cloud Run 服務,請按照下列步驟操作:

  1. gcloud 元件更新至最新版本:

    gcloud components update
  2. 確認已為專案啟用 Compute Engine API:

    gcloud services enable compute.googleapis.com
    
  3. 使用下列指令部署 Cloud Run 服務:

    gcloud run deploy SERVICE_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    取代:

    • SERVICE_NAME 替換為 Cloud Run 服務名稱。
    • IMAGE_URL 與容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用的是 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的形狀為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • NETWORK 替換為虛擬私人雲端網路名稱。
    • SUBNET 替換為子網路名稱。您可以在同一個子網路中部署或執行多項服務或工作。
    • 選用:NETWORK_TAG_NAMES,其中包含您要與服務建立關聯的網路標記名稱,以半形逗號分隔。對於服務,網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如 network-tag-2
    • EGRESS_SETTING 搭配egress 設定值
      • all-traffic:透過虛擬私有雲網路傳送所有傳出流量。
      • private-ranges-only:只透過虛擬私有雲網路將流量傳送至內部位址。
    • REGION 改為服務的地區。
  4. 如要確認服務位於 VPC 網路中,請執行下列指令:

    gcloud run services describe SERVICE_NAME \
    --region=REGION

    取代:

    • SERVICE_NAME 改為您的服務名稱。
    • REGION 替換為您在上一個步驟中指定的服務地區。

    輸出內容應包含網路、子網路和出口設定的名稱,例如:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

您現在可以根據防火牆規則,從 Cloud Run 服務傳送要求至 VPC 網路上的任何資源。

YAML

  1. 如果您要建立新服務,請略過這個步驟。如果您要更新現有服務,請下載其 YAML 設定

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新下列屬性:

    apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    取代:

    • SERVICE_NAME 改為 Cloud Run 服務名稱。服務名稱長度不得超過 49 個字元,且每個區域和專案的服務名稱都必須是獨一無二的。
    • REGION 與 Cloud Run 服務的地區,必須與子網路的地區相符。
    • NETWORK 替換為虛擬私人雲端網路的名稱。
    • SUBNET 替換為子網路名稱。您可以在同一個子網路中部署或執行多項服務或工作。
    • 選用:NETWORK_TAG_NAMES 與您要與服務建立關聯的網路標記名稱。對於服務,網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如 network-tag-2
    • EGRESS_SETTING 搭配egress 設定值
      • all-traffic:透過虛擬私有雲網路傳送所有傳出流量。
      • private-ranges-only:只透過虛擬私有雲網路將流量傳送至內部位址。
    • IMAGE 與服務容器映像檔的網址。

    您也可以指定更多設定,例如環境變數或記憶體上限。

  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

  1. 請將以下內容新增到您的 main.tf 檔案中:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

如要允許未經驗證的存取權,您可以選擇公開服務

建立工作

直接 VPC egress 可讓 Cloud Run 工作在沒有無伺服器虛擬私有雲存取連接器的情況下,將流量傳送至 VPC 網路。您也可以直接在 Cloud Run 工作上新增網路標記,以便實施更精細的網路安全性,例如套用 VPC 防火牆規則

您可以使用Google Cloud 主控台、Google Cloud CLI 或 YAML,為工作設定 Direct VPC 出口。

控制台

  1. 前往 Cloud Run

  2. 如果您要設定新工作,請按一下「Jobs」分頁,然後視需要填寫初始工作設定頁面。如果您要設定現有的工作,請按一下該工作,然後點選「編輯」

  3. 按一下「容器、變數和密鑰、連線、安全性」,展開工作屬性頁面。

  4. 按一下「連線設定」分頁標籤。

  5. 按一下「連線至虛擬私有雲,以傳出流量」

  6. 按一下「直接將流量傳送至虛擬私有雲」

  7. 在「Network」(網路) 欄位中,選取要傳送流量的 VPC 網路。

  8. 在「Subnet」(子網路) 欄位中,選取工作接收 IP 位址的子網路。您可以在同一個子網路中執行多項工作。

  9. 在「Traffic routing」(流量路由) 部分,選取下列其中一個選項:

    • 僅將傳至私人 IP 的要求轉送至虛擬私有雲,這樣系統就只會透過 VPC 網路傳送流量至內部位址。
    • 將所有流量轉送至虛擬私有雲,透過虛擬私有雲網路傳送所有出站流量。
  10. 選用:輸入要與服務相關聯的網路標記名稱。網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如 network-tag-2

  11. 選用:輸入要與工作或多個工作建立關聯的網路標記名稱。對於工作,網路標記是在執行層級指定。每個工作執行作業都可以有不同的網路標記,例如 network-tag-2

  12. 按一下「建立」或「更新」

  13. 如要確認工作位於虛擬私有雲網路,請按一下工作,然後點選「Configuration」分頁標籤。網路和子網路會列於 VPC 資訊卡中。

    您現在可以執行 Cloud Run 工作,並根據防火牆規則,將工作傳送至虛擬私有雲網路中的任何資源。

gcloud

如要透過 Google Cloud CLI 建立不含連接器的 Cloud Run 工作,請按照下列步驟操作:

  1. gcloud 元件更新至最新版本:

    gcloud components update
  2. 確認已為專案啟用 Compute Engine API:

    gcloud services enable compute.googleapis.com
    
  3. 使用下列指令建立 Cloud Run 工作:

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    取代:

    • JOB_NAME 替換為 Cloud Run 作業的名稱。
    • IMAGE_URL,參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • NETWORK 替換為虛擬私人雲端網路名稱。
    • SUBNET 替換為子網路名稱。您可以在同一個子網路中部署或執行多項服務或工作。
    • 選用:NETWORK_TAG_NAMES 可用來指定要與工作相關聯的網路標記名稱。針對工作,網路標記是在執行層級指定。每個工作執行作業都可以有不同的網路標記,例如 network-tag-2
    • EGRESS_SETTING 搭配egress 設定值
      • all-traffic:透過虛擬私有雲網路傳送所有傳出流量。
      • private-ranges-only:只透過虛擬私有雲網路將流量傳送至內部位址。
    • REGION 替換為工作所在的區域。
  4. 如要確認工作位於虛擬私有雲網路,請執行下列指令:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    取代:

    • JOB_NAME 改為工作名稱。
    • REGION 與您在上一個步驟中指定的工作區域。

    輸出內容應包含網路和子網路名稱,例如:

    VPC network:
      Network:       default
      Subnet:        default
    

您現在可以執行 Cloud Run 工作,並根據防火牆規則,將工作傳送至虛擬私有雲網路中的任何資源。

YAML

  1. 如果您要建立新工作,請略過這個步驟。如果您要更新現有工作,請下載其 YAML 設定

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 更新下列屬性:

    apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    取代:

    • JOB_NAME 替換為 Cloud Run 作業的名稱。工作名稱長度不得超過 49 個半形字元,且每個區域和專案的名稱都必須不重複。
    • REGION 與 Cloud Run 工作所在的區域,該區域必須與子網路的區域相符。
    • NETWORK 替換為虛擬私人雲端網路的名稱。
    • SUBNET 替換為子網路名稱。您可以在同一個子網路中部署或執行多項服務或工作。
    • 選用:NETWORK_TAG_NAMES 可用來指定要與工作相關聯的網路標記名稱。針對工作,網路標記是在執行層級指定。每個工作執行作業都可以有不同的網路標記,例如 network-tag-2
    • EGRESS_SETTING 搭配egress 設定值
      • all-traffic:透過虛擬私有雲網路傳送所有傳出流量。
      • private-ranges-only:只透過虛擬私有雲網路將流量傳送至內部位址。
    • IMAGE 與工作容器映像檔的網址。
  3. 使用下列指令建立或更新工作:

    gcloud run jobs replace job.yaml

設定雙層式服務和工作

如要在 Cloud Run 服務或工作中新增內部 IPv6 範圍的雙層子網路,請參閱「設定雙層服務和工作」。

使用防火牆規則限制存取權

使用虛擬私有雲防火牆規則,限制對 VPC 網路中資源的存取權。請使用下列其中一種策略新增這些限制:

  • 使用子網路的 IP 範圍,建立參照服務工作的防火牆輸入規則。
  • 建立參照服務工作的輸出防火牆規則。

    在輸出防火牆規則中,使用已連結的服務帳戶 服務身分、子網路的 IP 範圍,或相關聯的網路標記來參照服務或工作。

輸出網路標記

在出口防火牆規則中使用網路標記,為網路安全性再添一層防護。

控制台

如要將網路標記與服務或工作建立關聯,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面。

    前往 Cloud Run

  2. 按一下要與網路標記建立關聯的服務或工作,然後點選服務的「編輯並部署新修訂版本」,或點選工作中的「編輯」

  3. 如要查看服務,請按一下「Networking」分頁標籤;如要查看工作,請按一下「Connections」分頁標籤。

  4. 確認您已選取「連線至虛擬私有雲,以傳出流量」和「直接將流量傳送至虛擬私有雲」

  5. 在「子網路」欄位中,選取服務接收 IP 位址的子網路。您可以在同一個子網路上部署或執行多項服務或工作。

  6. 在「Network tags」欄位中,輸入要與服務或工作關聯的網路標記名稱。

  7. 按一下「部署」或「更新」

對於服務,每個服務修訂版本都可以有不同的網路標記組合,因為網路標記是在修訂版本層級指定。對於工作,工作執行作業會使用工作建立時所設的網路標記。

gcloud

如要將網路標記與服務或工作建立關聯,請使用 gcloud run deploy 指令:

gcloud run deploy SERVICE_JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --region=REGION

更改下列內容:

  • SERVICE_JOB_NAME 改為您的服務或工作名稱。
  • IMAGE_URL 與服務或工作機會的圖片網址。
  • NETWORK 替換為虛擬私人雲端網路的名稱。
  • SUBNET 替換為子網路名稱。您可以在同一個子網路中部署或執行多項服務或工作。
  • NETWORK_TAG_NAMES 與網路標記的名稱或以半形逗號分隔的網路標記清單。
  • REGION 改為您的區域名稱。

對於服務,每個服務修訂版本都可以有不同的網路標記組合,因為網路標記是在修訂版本層級指定。對於工作,工作執行作業會使用工作建立時所設的網路標記。

取消服務連結

控制台

  • 如要從 VPC 網路移除服務,請按照下列步驟操作:

    1. 前往 Cloud Run

    2. 按一下要移除的服務,然後點選「編輯及部署新的修訂版本」

    3. 按一下 [網路] 分頁標籤。

    4. 清除「連線至虛擬私有雲,以傳出流量」

    5. 按一下 [Deploy] (部署)

    6. 如要確認服務已不再位於 VPC 網路中,請按一下「Networking」分頁標籤。網路和子網路不再列在 VPC 資訊卡中。

  • 如要移除網路標記,同時讓服務連線至 VPC 網路,請按照下列步驟操作:

    1. 按一下含有要移除的網路標記的服務,然後點選「編輯並部署新修訂版本」

    2. 按一下 [網路] 分頁標籤。

    3. 清除不再想與服務建立關聯的網路標記名稱。

    4. 按一下 [Deploy] (部署)

gcloud

  • 如要從 VPC 網路中移除服務,請執行下列指令:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network
  • 如要只移除網路標記,同時讓服務連線至 VPC 網路,請執行下列指令:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network-tags

    更改下列內容:

    • SERVICE_NAME:Cloud Run 服務名稱。
    • REGION:Cloud Run 服務的區域。

YAML

  • 如要從 VPC 網路移除服務,請按照下列步驟操作:

    1. 下載服務的 YAML 設定

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. 請從 service.yaml 檔案中移除下列內容:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      地點

      • NETWORK:虛擬私有雲網路名稱。
      • SUBNET:子網路名稱。
      • 選用:NETWORK_TAG_NAMES:如果您已將網路標記與服務建立關聯,則為網路標記的名稱。
    3. 執行下列指令來部署服務修訂版本:

      gcloud run services replace service.yaml
  • 如要移除網路標記,同時讓服務連線至 VPC 網路,請按照下列步驟操作:

    1. 下載服務的 YAML 設定

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. service.yaml 檔案的內容中移除 tags 變數,保留 networksubnetwork 變數,如以下範例所示:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      地點

      • NETWORK:虛擬私有雲網路名稱。
      • SUBNET:子網路名稱。
    3. 執行下列指令來部署服務修訂版本:

      gcloud run services replace service.yaml

取消連結工作

控制台

  • 如要將工作從 VPC 網路中移除:

    1. 前往 Cloud Run

    2. 按一下要移除的工作,然後點選「編輯及部署新的修訂版本」

    3. 按一下「連線設定」分頁標籤。

    4. 清除「連線至虛擬私有雲,以傳出流量」

    5. 按一下「更新」

    6. 如要確認工作已不再位於 VPC 網路中,請按一下「Configuration」分頁標籤。網路和子網路不再列在 VPC 資訊卡中。

  • 如要只移除網路標記,同時讓工作連線至 VPC 網路,請按照下列步驟操作:

    1. 按一下含有要移除的網路標記的工作,然後按一下「編輯並部署新修訂版本」

    2. 按一下「連線設定」分頁標籤。

    3. 清除不再想與工作建立關聯的網路標記名稱。

    4. 按一下「更新」

gcloud

  • 如要從 VPC 網路中移除工作,請執行下列指令:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network
      
  • 如要只移除網路代碼,同時讓工作與 VPC 網路保持連線,請執行下列指令:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network-tags
      

    更改下列內容:

    • JOB_NAME:Cloud Run 工作名稱。
    • REGION:Cloud Run 工作的區域。

YAML

  • 如要將工作從 VPC 網路中移除:

    1. 下載工作YAML 設定

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. 請從 job.yaml 檔案中移除下列內容:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      更改下列內容:

      • NETWORK:虛擬私有雲網路名稱。
      • SUBNET:子網路名稱。
      • 選用:NETWORK_TAG_NAMES 包含網路標記的名稱 (如果您已將這些標記與工作建立關聯)。
    3. 執行下列指令更新工作:

      gcloud run jobs replace job.yaml
  • 如要只移除網路標記,同時讓工作連線至 VPC 網路,請按照下列步驟操作:

    1. 下載工作YAML 設定

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. job.yaml 檔案的內容中移除 tags 變數,保留 networksubnetwork 變數,如以下範例所示:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      更改下列內容:

      • NETWORK:虛擬私有雲網路名稱。
      • SUBNET:子網路名稱。
    3. 執行下列指令更新工作:

      gcloud run jobs replace job.yaml

疑難排解

無法刪除子網路

如要刪除子網路,您必須先刪除或重新部署所有使用該子網路的資源。如果 Cloud Run 使用子網路,請先將 Cloud Run 服務工作從虛擬私有雲網路中斷開連線,或將其移至其他子網路,再刪除子網路。

直接虛擬私有雲子網路的 IPv4 位址用盡

嘗試部署時會發生下列錯誤:

Instance failed to start because of insufficient free IP addresses in the
subnetwork SUBNET_ID when attempting to create an address in the
subnetwork. Please consider moving to a subnetwork with more available IP
addresses.

如果虛擬私有雲網路的子網路用盡 IPv4 位址,Cloud Logging 會記錄這項資訊。發生這種情況時,Cloud Run 必須等到更多 IPv4 位址可用,才能再啟動任何服務執行個體或工作任務。

如要解決這個問題,請按照IP 位址用盡策略操作。

查看已分配的 IP 位址

如要查看 Cloud Run 已分配的 IP 位址,請前往 Google Cloud 控制台的「IP 位址」頁面,或在 Google Cloud CLI 中執行下列指令:

gcloud compute addresses list

自訂 MTU 相關問題

如果您在使用自訂 MTU 時遇到問題,請務必使用 Cloud Run 的預設 MTU 設定