您可以啟用 Cloud Run 服務或工作,使用直連虛擬私有雲輸出功能,將流量傳送至共用虛擬私有雲網路,不需使用無伺服器虛擬私有雲存取連接器。
本頁面說明如何設定 Cloud Run 的 IAM 權限,以便使用 Shared VPC 虛擬私有雲網路的子網路,然後將服務或工作放在共用子網路上。
事前準備
限制
Cloud Run 服務和工作有下列限制:
- 使用直連虛擬私有雲輸出時,執行個體啟動時可能會延遲一分鐘以上才建立連線。建議您設定 HTTP 啟動探測,在應用程式接受要求前,測試與應用程式所用輸出目的地的連線。這項輸出連線能力測試應實作重試機制,或將啟動探測設定為適當的週期和門檻,做為重試機制。
- 如果 Cloud Run 工作的執行時間超過 1 小時,連線可能會中斷。在維護事件期間,工作會從一部機器遷移至另一部機器,此時就可能發生這種情況。容器會在事件發生前 10 秒收到
SIGTSTP信號,並在事件發生後收到SIGCONT信號。容器收到SIGCONT信號後,請重試連線。 - 使用 Cloud NAT 時,如果透過直連虛擬私有雲輸出,執行個體啟動時可能會發生 30 秒以上的冷啟動延遲。為提升啟動效能,建議您搭配使用無伺服器 VPC 存取連接器和 Cloud NAT。
- Cloud Run 支援的總處理量上限為每個容器執行個體 1 Gbps。超過這個數量會導致效能受限。
Cloud Run 用量配額會限制可設定使用直連虛擬私有雲輸出的容器執行個體數量上限。上限是依據 Cloud Run 修訂版本或工作執行作業設定。如要提高預設限制,請參閱如何提高配額。
- Cloud Run 服務和工作 在網路基礎架構維護事件期間,可能會發生連線中斷。建議您使用可處理偶發連線重設的用戶端程式庫。
- Network Intelligence Center 僅支援 IPv4 和 IPv6 子網路範圍的 Connectivity Tests 和 Flow Analyzer。
直連虛擬私有雲輸出不支援下列項目:
- 虛擬私有雲流量記錄不會提供 Cloud Run 修訂版本的名稱。
- 虛擬私有雲防火牆規則記錄
- Packet Mirroring
- 輸入防火牆規則中的網路標記或服務身分。
- 防火牆規則無法使用附加至 Cloud Run 工作負載的 Resource Manager 標記。
- 使用 Cloud Next Generation Firewall Enterprise 檢查 egress 流量,例如入侵偵測與防範服務、網址篩選服務和 TLS 檢查。
設定 IAM 權限
Shared VPC 服務專案中的 Cloud Run 必須先確保 Cloud Run 服務代理具備足夠的子網路使用權限,才能存取 Shared VPC 虛擬私有雲網路。
如要存取 Shared VPC 網路,請新增下列其中一個角色,為 Cloud Run 服務代理授予足夠權限:
Shared VPC 主機專案的運算網路使用者 (
roles/compute.networkUser) 。具有外部 IPv6 的子網路也需要運算公開 IP 管理員 (roles/compute.publicIpAdmin) 角色。例如,如要授予 Compute 網路使用者角色,請執行下列指令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
更改下列內容:
- HOST_PROJECT_ID:Shared VPC 主機專案的 ID。
- SERVICE_PROJECT_NUMBER:部署 Cloud Run 服務或工作的 Shared VPC 服務專案編號。
Shared VPC 主專案的 Compute 網路檢視者 (
compute.networkViewer) 角色,以及 Shared VPC 子網路的 Compute 網路使用者 (compute.networkUser) 角色。如果子網路具有外部 IPv6,則也需要運算公開 IP 管理員 (roles/compute.publicIpAdmin) 角色。例如,如要授予子網路的 Compute 網路使用者角色,請執行下列指令:
gcloud compute networks subnets add-iam-policy-binding SUBNET_NAME \ --region REGION \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \ --role "roles/compute.networkUser" \ --project HOST_PROJECT_ID
更改下列內容:
- SUBNET_NAME:要執行 Cloud Run 服務的子網路完整資源名稱。
- REGION:Cloud Run 服務的區域,必須與子網路的區域相符。
- SERVICE_PROJECT_NUMBER:部署 Cloud Run 服務或工作的 Shared VPC 服務專案編號。
- HOST_PROJECT_ID:Shared VPC 主機專案的 ID。
Cloud Run 服務代理程式需要 Cloud Run 專案的 Cloud Run 服務代理程式角色。您可以執行下列指令,確認角色並未手動移除:
gcloud projects get-iam-policy SERVICE_PROJECT_ID \ --flatten bindings \ --filter "bindings.role:roles/run.serviceAgent"
將 SERVICE_PROJECT_ID 替換為 Cloud Run 服務或工作的專案 ID。
如要更精細地控管,請確認 Cloud Run 服務代理具備下列權限:
- Shared VPC 主專案的
compute.networks.get - 主專案或特定子網路的
compute.subnetworks.get - 主專案或特定子網路的
compute.subnetworks.use - Shared VPC 服務專案的
compute.addresses.get - Shared VPC 服務專案的
compute.addresses.list - 共用虛擬私有雲服務專案上的
compute.addresses.create(僅限具有外部 IPv6 的雙協定子網路) compute.addresses.delete在 Shared VPC 服務專案上 (僅適用於具備外部 IPv6 的雙協定子網路)- Shared VPC 服務專案的
compute.addresses.createInternal - Shared VPC 服務專案的
compute.addresses.deleteInternal - Shared VPC 服務專案的
compute.regionOperations.get
IP 位址分配
如要將 Cloud Run 服務或工作放在虛擬私有雲網路,請指定虛擬私有雲網路和/或子網路。如果只指定網路,子網路會使用與網路相同的名稱。Cloud Run 會從子網路分配 IP 位址。
IP 位址是暫時性的,因此請勿根據個別 IP 建立政策。如要根據 IP 建立政策 (例如防火牆規則),則必須使用整個子網路的 IP 位址範圍。
如要變更 Cloud Run 資源使用的網路或子網路,請建立新的修訂版本、工作任務或執行個體部署作業,並使用新的網路和子網路值。
擴充及縮減
為在流量暴增時快速擴充,Cloud Run 會一次保留 16 個 IP 位址 (28 子網路遮罩)。查看 Cloud Run 分配的 IP 位址。為確保 Cloud Run 有足夠的 IPv4 位址可用,子網路的 IPv4 位址範圍必須為 /26 以上。
為提高 IP 分配效率並簡化管理作業,請將多項資源放在同一個子網路。如果 IPv4 位址空間有限,請參閱「支援的 IPv4 範圍」一節,瞭解其他選項。
如要刪除子網路,您必須先刪除或重新部署 Cloud Run服務或工作 ,停止使用子網路,然後等待 1 到 2 小時。
服務的 IP 位址用量
在穩定狀態下,Cloud Run 使用的 IP 位址數量是容器執行個體數量的 2 倍。當修訂版本縮減時,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 範圍:
部署服務
透過直接虛擬私有雲輸出,Cloud Run 服務可以將流量傳送至 Shared VPC 網路,不需使用無伺服器虛擬私有雲存取連接器。網路費用會與服務本身一樣,降至零。您也可以直接在 Cloud Run 服務修訂版本中新增網路標記,以更精細的方式控管網路安全,例如套用虛擬私有雲防火牆規則。
您可以使用Cloud de Confiance 控制台、Google Cloud CLI 或 YAML,為服務設定直連虛擬私有雲輸出。
控制台
前往 Cloud de Confiance 控制台的「Cloud Run」頁面:
從 Cloud Run 導覽選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務。
如要設定新服務,請視需要填寫初始服務設定頁面,然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開服務設定頁面。
按一下 [網路] 分頁標籤。
按一下「連線至虛擬私有雲,以傳出流量」。
按一下「直接將流量傳送至虛擬私有雲」。
選取「與我共用的網路」。
在「Network」(網路) 欄位中,選取要傳送流量的 Shared VPC 網路。
在「Subnet」(子網路) 欄位中,選取服務接收 IP 位址的子網路。
選用:輸入要與服務建立關聯的網路標記名稱。網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如
network-tag-2。在「流量轉送」部分,選取下列其中一個選項:
- 僅將傳至私人 IP 的要求轉送至虛擬私有雲:僅透過共用虛擬私有雲網路將流量傳送至內部位址。
- 將所有流量轉送至虛擬私有雲,透過 Shared VPC 網路傳送所有傳出流量。
按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。
如要確認服務是否位於共用虛擬私有雲網路,請按一下服務,然後按一下「Networking」(網路) 分頁標籤。網路和子網路會列在「VPC」資訊卡中。
現在,您可以從 Cloud Run 服務傳送要求至共用虛擬私有雲網路上的任何資源,只要防火牆規則允許即可。
gcloud
如要將服務放在共用子網路上,請執行下列指令,指定 Shared VPC 網路和子網路的完整資源名稱:
gcloud run deploy SERVICE_NAME \ --image IMAGE_URL \ --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --network-tags NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region REGION \ --max-instances MAX
更改下列內容:
- SERVICE_NAME:Cloud Run 服務的名稱。
- IMAGE_URL:服務的圖片網址。
- HOST_PROJECT_ID:Shared VPC 專案的 ID。
- VPC_NETWORK:共用虛擬私有雲網路的完整資源名稱。
- REGION:Cloud Run 服務的區域,必須與子網路的區域相符。
- SUBNET_NAME:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES,以半形逗號分隔要與服務建立關聯的網路標記名稱。如果是服務,網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如
network-tag-2。 - EGRESS_SETTING 搭配輸出設定值:
all-traffic:透過 Shared VPC 網路傳送所有傳出流量。private-ranges-only:僅透過 Shared VPC 虛擬私有雲網路將流量傳送至內部位址。
- MAX:共用虛擬私有雲網路可使用的執行個體數量上限。服務的執行個體數量上限為 100 個。
如要瞭解詳情和選用引數,請參閱 gcloud 參考資料。
YAML
如果您要建立新服務,請略過這個步驟。如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新下列屬性:
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_NAME 替換為子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES 是要與服務建立關聯的網路標記名稱。如果是服務,網路標記是在修訂版本層級指定。每個服務修訂版本都可以有不同的網路標記,例如
network-tag-2。 - EGRESS_SETTING 搭配輸出設定值:
all-traffic:透過 Shared VPC 網路傳送所有傳出流量。private-ranges-only:僅透過 Shared VPC 虛擬私有雲網路將流量傳送至內部位址。
- IMAGE:服務容器映像檔的網址。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
請將以下內容新增到您的
main.tf檔案中:
如要允許未經驗證的使用者存取服務,可以選擇公開服務。
建立工作
Cloud Run 工作可透過直連虛擬私有雲輸出功能,將流量傳送至 Shared VPC 網路,不需使用無伺服器 VPC 存取連接器。您也可以直接在 Cloud Run 工作中新增網路標記,進一步控管網路安全,例如套用虛擬私有雲防火牆規則。
您可以使用Cloud de Confiance 控制台、Google Cloud CLI 或 YAML,為工作設定直連虛擬私有雲輸出。
控制台
前往 Cloud de Confiance 控制台的 Cloud Run「Jobs」(工作) 頁面:
如要設定新工作,請按一下「Deploy container」(部署容器),視需要填寫初始「Create job」(建立工作) 表單。如要設定現有工作,請按一下「Jobs」(工作) 分頁標籤,選取工作,然後按一下「Edit」(編輯)。
按一下「Container, Variables & Secrets, Connections, Security」(容器、變數和密鑰、連線、安全性),展開工作屬性頁面。
按一下「連線」分頁標籤。
按一下「連線至虛擬私有雲,以傳出流量」。
按一下「直接將流量傳送至虛擬私有雲」。
選取「與我共用的網路」。
在「Network」(網路) 欄位中,選取要傳送流量的 Shared VPC 網路。
在「Subnet」(子網路) 欄位中,選取工作接收 IP 位址的子網路。
選用:輸入要與工作建立關聯的網路標記名稱。如果是工作,網路標記是在執行層級指定。每項工作執行作業可以有不同的網路標記,例如
network-tag-2。在「流量轉送」部分,選取下列其中一個選項:
- 僅將傳至私人 IP 的要求轉送至虛擬私有雲:僅透過共用虛擬私有雲網路將流量傳送至內部位址。
- 將所有流量轉送至虛擬私有雲,透過 Shared VPC 網路傳送所有傳出流量。
按一下「建立」或「更新」。
如要確認工作位於 Shared VPC 網路,請依序點選工作和「設定」分頁標籤。網路和子網路會列在「虛擬私有雲」資訊卡中。
現在可以執行 Cloud Run 工作,並從工作傳送要求至共用虛擬私有雲網路上的任何資源,只要防火牆規則允許即可。
gcloud
如要將工作放在共用子網路上,請執行下列指令,指定 Shared VPC 網路和子網路的完整資源名稱:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL \ --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --network-tags NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region REGION \
更改下列內容:
- JOB_NAME:Cloud Run 工作名稱。
- IMAGE_URL:工作的圖片網址。
- HOST_PROJECT_ID:Shared VPC 主機專案的 ID。
- VPC_NETWORK:共用虛擬私有雲網路的完整資源名稱。
- REGION:Cloud Run 工作的區域,必須與子網路的區域相符。
- SUBNET_NAME:子網路名稱的完整資源名稱。
- 選用:NETWORK_TAG_NAMES,以半形逗號分隔要與工作建立關聯的網路標記名稱。每項工作執行作業都可以有不同的網路標記,例如
network-tag-2。 - EGRESS_SETTING 搭配輸出設定值:
all-traffic:透過 Shared VPC 網路傳送所有傳出流量。private-ranges-only:僅透過 Shared VPC 虛擬私有雲網路將流量傳送至內部位址。
如要瞭解詳情和選用引數,請參閱 gcloud 參考資料。
YAML
如果您要建立新工作,請略過這個步驟。如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB --format export > job.yaml
更新下列屬性:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME annotations: run.googleapis.com/launch-stage: BETA 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 搭配輸出設定值:
all-traffic:透過 Shared VPC 網路傳送所有傳出流量。private-ranges-only:僅透過 Shared VPC 虛擬私有雲網路將流量傳送至內部位址。
- IMAGE:工作容器映像檔的網址。
使用下列指令建立或更新工作:
gcloud run jobs replace job.yaml
設定雙協定子網路
如要在 Cloud Run 資源上新增具有 IPv6 範圍的雙協定子網路,請參閱「設定雙協定子網路」。
取消連結服務
控制台
如要從 Shared VPC 網路移除服務,請按照下列步驟操作:
前往 Cloud de Confiance 控制台的 Cloud Run「Services」(服務) 頁面:
按一下所需服務。
按一下 [網路] 分頁標籤。
取消勾選「連線至虛擬私有雲,以傳出流量」旁的核取方塊。
依序點選「查看差異並重新部署」和「部署變更」。
如要確認服務已不在 Shared VPC 網路上,請按一下「Networking」(網路) 分頁標籤。「VPC」資訊卡中不會再列出網路和子網路。
如要只移除網路標記,但保留服務與共用虛擬私有雲網路的連線,請按照下列步驟操作:
按一下要移除網路標記的服務。
按一下 [網路] 分頁標籤。
清除不想再與服務建立關聯的網路標記名稱。
依序點選「查看差異並重新部署」和「部署變更」。
gcloud
如要從 Shared VPC 網路移除服務,請執行下列指令:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network
如要只移除網路標記,但保留服務與 Shared VPC 虛擬私有雲網路的連線,請執行下列指令:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network-tags
更改下列內容:
- SERVICE_NAME:Cloud Run 服務的名稱。
- REGION:Cloud Run 服務的區域。
YAML
如要從 Shared VPC 網路移除服務,請按照下列步驟操作:
下載服務的 YAML 設定:
gcloud run services describe SERVICE_NAME --format export > service.yaml
從
service.yaml檔案中移除下列內容:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
地點
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES:網路標記的名稱 (如果您已將標記與服務建立關聯)。
使用下列指令更新服務:
gcloud run services replace service.yaml
如要只移除網路標記,但保留服務與共用虛擬私有雲網路的連線,請按照下列步驟操作:
下載服務的 YAML 設定:
gcloud run services describe SERVICE_NAME --format export > service.yaml
從
service.yaml檔案的內容中移除tags變數,保留network和subnetwork變數,如以下範例所示:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
更改下列內容:
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
使用下列指令更新服務:
gcloud run services replace service.yaml
取消連結工作
控制台
如要從 Shared VPC 網路中移除工作,請按照下列步驟操作:
前往 Cloud de Confiance 控制台的 Cloud Run「Jobs」(工作) 頁面:
按一下要移除的工作,然後點選「Edit and deploy new revision」(編輯及部署新的修訂版本)。
按一下 [設定] 標籤。
清除「連線至虛擬私有雲,以傳出流量」。
按一下「Update」。
如要確認工作已不在 Shared VPC 網路上,請按一下「Configuration」(設定) 分頁標籤。「VPC」資訊卡中不會再列出該網路和子網路。
如要僅移除網路標記,但保留工作與 Shared VPC 虛擬私有雲網路的連線,請按照下列步驟操作:
按一下含有要移除網路標記的工作,然後點選「Edit and deploy new revision」(編輯及部署新的修訂版本)。
按一下「連線」分頁標籤。
清除不再與工作建立關聯的網路標記名稱。
按一下「Update」。
gcloud
如要從 Shared VPC 網路中移除工作,請執行下列指令:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network
如要只移除網路標記,但保留工作與 Shared VPC 網路的連線,請執行下列指令:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network-tags
更改下列內容:
- JOB_NAME:Cloud Run 工作名稱。
- REGION:Cloud Run 工作的區域。
YAML
如要從 Shared VPC 網路中移除工作,請按照下列步驟操作:
下載工作的 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
從
job.yaml檔案中移除下列內容:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
地點
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES:網路標記的名稱 (如果您已將其與工作建立關聯)。
使用下列指令更新工作:
gcloud run jobs replace job.yaml
如要僅移除網路標記,但保留工作與 Shared VPC 虛擬私有雲網路的連線,請按照下列步驟操作:
下載工作的 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
從
job.yaml檔案中移除下列內容:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
地點
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES:網路標記的名稱 (如果您已將其與工作建立關聯)。
使用下列指令更新工作:
gcloud run jobs replace job.yaml
疑難排解
無法刪除子網路
如要刪除子網路,必須先刪除所有使用該子網路的資源。如果 Cloud Run 使用子網路,您必須先中斷 Cloud Run 與 Shared VPC 虛擬私有雲網路的連線,或將其移至其他子網路,才能刪除子網路。
無法卸離 Shared VPC 網路
如要卸載主專案中的 Shared VPC 虛擬私有雲網路,請按照取消佈建 Shared VPC 的步驟操作,並務必中斷任何 Cloud Run 服務或工作與 Shared VPC 虛擬私有雲網路的連線。
如要查看哪些 Cloud Run 資源使用 Shared VPC 網路,請執行下列指令:
gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
將 HOST_PROJECT_ID 替換為 Shared VPC 主機專案的 ID。
直連虛擬私有雲輸出子網路的 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 位址,請前往 Cloud de Confiance 控制台的「IP addresses」(IP 位址) 頁面,或透過 Google Cloud CLI 執行下列指令:
gcloud compute addresses list