本頁面說明如何設定私人資源池,透過靜態外部 IP 存取外部資源。
如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導):
事前準備
-
Enable the Cloud Build, Compute Engine, and Service Networking APIs.
如要取得設定私人連線所需的權限,請要求管理員為您授予虛擬私有雲網路所在 Cloud 專案的 Compute Engine 網路管理員 (
roles/compute.networkAdmin
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理存取權」。如要使用本頁的
gcloud
指令,請安裝 Google Cloud CLI。
建立虛擬私人雲端網路
主控台
如要使用 Google Cloud 控制台建立虛擬私有雲網路,請完成下列步驟:
在 Google Cloud 控制台中開啟「虛擬私有雲網路」頁面。
按一下「建立虛擬私有雲網路」,建立新的網路。
您會看到「建立虛擬私有雲網路」頁面。
輸入網路的名稱。
在「子網路建立模式」下方,選取「自動」。
如要進一步自訂其他欄位,請參閱「建立及管理虛擬私有雲網路」。否則,請將所有欄位維持原樣。
按一下「建立」,即可建立 VPC 網路。
點選「建立」後,您會在「VPC 網路」頁面中看到新的虛擬私有雲網路。
gcloud
如要使用 gcloud
指令列工具建立 VPC 網路,請在終端機中輸入下列指令,其中 NETWORK_NAME 是 VPC 網路的名稱:
gcloud compute networks create NETWORK_NAME \
--subnet-mode=auto
點選「建立」後,您會在「VPC 網路」頁面中看到新的虛擬私有雲網路。
如要進一步瞭解如何建立及管理虛擬私有雲網路,請參閱「建立及管理虛擬私有雲網路」。
建立私人連線
主控台
如要在 VPC 網路與服務供應商網路之間建立私人連線,請完成下列步驟:
在 Google Cloud 控制台中開啟「虛擬私有雲網路」頁面。
按一下聯播網名稱。
畫面中會顯示「虛擬私有雲網路詳細資料」頁面。
按一下「Private Service Connection」(私人服務連線) 分頁。
選取「Allocated IP ranges for services」(已分配的服務 IP 範圍) 分頁標籤。
按一下「分配 IP 範圍」。
畫面上會顯示「Allocate an internal IP range」(分配內部 IP 範圍) 彈出式視窗。
輸入 IP 範圍的名稱。
在「IP 範圍」下方,選取「自動」。
在「Prefix length」欄位中,輸入網路的前置字元長度。
按一下「Allocate」,分配 IP 範圍。
選取「Private Connections to Services」(私人服務連線) 分頁。
按一下「建立連線」。
畫面上會顯示「Create a private connection」彈出式視窗。
在「已指派的分配範圍」下方,選取 IP 範圍。
按一下「連線」。
您現在會在「Private Connections to Services」(私人服務連線) 分頁下方的表格中看到連線。
按一下「Enable」 (匯出自訂路徑),確保虛擬私有雲網路的路徑套用至私人集區執行個體執行的網路。
網路現已設定完成。
gcloud
如要在 VPC 網路與服務供應商網路之間建立私人連線,請完成下列步驟:
在終端機中輸入下列指令,為服務分配 IP 範圍:
gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --prefix-length=PREFIX_LENGTH \ --network=VPC_NETWORK \ --project=PROJECT_ID
其中:
- RESERVED_RANGE_NAME 是分配範圍的名稱。例如:
my-allocated-range
。 - PREFIX_LENGTH 是網路的前置字元長度。前置字串長度必須為
/24
或更短,例如/22
、/21
等。 - VPC_NETWORK 是您的虛擬私人雲端網路名稱,例如
my-vpc-network
。 - PROJECT_ID 是含有您的 VPC 網路的專案 ID。
- RESERVED_RANGE_NAME 是分配範圍的名稱。例如:
在終端機中輸入下列指令,建立私人連線:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID
其中:
- RESERVED_RANGE_NAME 是您在先前步驟中建立的分配範圍名稱。
- VPC_NETWORK 是您的虛擬私人雲端網路名稱,例如
my-vpc-network
。 - PROJECT_ID 是含有您的 VPC 網路的專案 ID。
在終端機中輸入下列指令,確保虛擬私有雲網路的路徑套用至私人資源池執行個體所在的網路:
gcloud compute networks peerings update servicenetworking-googleapis-com \ --export-custom-routes \ --network=VPC_NETWORK \ --project=PROJECT_ID
其中:
- VPC_NETWORK 是您的虛擬私人雲端網路名稱,例如
my-vpc-network
。 - PROJECT_ID 是含有您的 VPC 網路的專案 ID。
- VPC_NETWORK 是您的虛擬私人雲端網路名稱,例如
網路現已設定完成。
如要進一步瞭解如何設定網路,請參閱「在 VPC 網路與服務供應商網路之間設定私人連線」。
建立私人集區
主控台
如要使用 Google Cloud 控制台建立私人集區,請完成下列步驟:
在 Google Cloud 控制台中開啟「Worker Pool」頁面:
選取要建立私人集區的專案。
在「Worker pool」(工作站集區) 頁面中,按一下「Create」(建立)。
畫面上會顯示「Create private pool」(建立私人集區) 面板。
在「Create private pool」(建立私人集區) 側邊面板中輸入下列資訊:
輸入私人集區的名稱。
從下拉式選單中選取「Region」。
在「Network」下方,輸入下列資訊:
- 專案:輸入專案 ID 或編號。
- 網路:輸入虛擬私有雲網路的名稱。
- (選用) 如要設定最受限制的網路,請取消勾選「Assign external IPs」(指派外部 IP) 方塊。
您現在已建立私人集區。
gcloud
如要使用 gcloud
指令列工具建立私人集區,請在終端機中輸入下列指令:
gcloud builds worker-pools create PRIVATEPOOL_ID \
--project=PRIVATEPOOL_PROJECT_ID \
--region=REGION \
--peered-network=PEERED_NETWORK \
--no-public-egress
其中:
- PRIVATEPOOL_ID 是私人集區的專屬 ID。
- PRIVATEPOOL_PROJECT_ID 是您要建立私人集區的 Google Cloud 專案 ID。
- REGION 是支援的地區之一。
- PEERED_NETWORK 是網路資源網址
--no-public-egress
:如果設定此標記,系統會在沒有外部 IP 位址的情況下建立私人集區。
您現在已建立私人集區。
如要進一步瞭解如何建立及管理私人集區,請參閱「建立及管理私人集區」。
在私人網路中存取外部資源
根據預設,與 Cloud Build 私人集區相關聯的外部 IP 位址並非靜態或可設定的。這些類別是由Google Cloud指派。如果您想設定私人集區,讓其透過靜態外部 IP 存取私人網路中的外部資源,則必須在專案中設定虛擬機器 (VM),讓其充當自管理 NAT 閘道,將要求代理至公開網際網路。接著,您必須設定自訂路徑,將這些要求轉送至 VM,確保路徑與服務網路專案交換。
本節將說明如何設定私人資源池,透過靜態外部 IP 存取外部資源,請完成下列步驟:
建立開機指令碼,將 VM 設為代理所有轉送至 VM 的流量,並將該流量偽裝成來自其 IP 位址:
#! /bin/bash set -e sysctl -w net.ipv4.ip_forward=1 IFACE=$(ip -brief link | tail -1 | awk {'print $1'}) iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
在私人集區中設定虛擬機器,並設定規則,允許透過虛擬私有雲代理要求:
gcloud compute instances create VM_NAME \ --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \ --network=NETWORK_NAME \ --private-network-ip=INTERNAL_IP --can-ip-forward \ --zone=ZONE \ --subnet=SUBNETWORK \ --tags=NAT_TAG \ --metadata-from-file=startup-script=STARTUP_SCRIPT
其中:
- VM_NAME 是您要為 VM 提供的名稱。
- NETWORK_NAME 是您在上一節中建立的網路名稱。
- INTERNAL_IP 是 VM 區域子網路範圍內的任何有效內部 IP 位址。例如:
10.128.0.2
。 - ZONE 是與網路相關聯的區域,例如
us-central1-a
。 - (選用) SUBNETWORK 是子網路的名稱。子網路名稱可在子網路的等效 REST 中找到,格式如下:
projects/project-id/regions/region/subnetworks/subnetwork-name
。如果您在建立 VPC 網路時,在「子網路連線模式」下方選取「自動」,就不需要指定這個欄位。 - NAT_TAG 是 NAT 閘道標記的名稱,可讓您根據要求是否具有來自此 VM 的標記,有條件地轉送要求。您可以為代碼指定任何名稱。
- STARTUP_SCRIPT 是您在先前步驟中建立的啟動指令碼名稱。例如:
startup-script-example.sh
。在本例中,--metadata-from-file
旗標會用來將您指定的啟動指令碼內容傳遞至名為startup-script
的鍵。
執行此指令後,您會看到包含外部 IP 值的輸出內容。請記下外部 IP 值。從私人集區傳送至外部資源的所有流量都會經過這個位址。您可以選擇使用這個位址進行進一步設定,例如在外部網路中設定防火牆規則。
設定路徑,將所有外部資源要求導向先前步驟中建立的執行個體,以便將要求轉送至私人集區執行個體:
gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-address=INTERNAL_IP \ --network=NETWORK_NAME \ --priority=POOL_ROUTE_PRIORITY
其中:
- PRIVATE_POOL_ROUTE_NAME 是您要為路徑命名的名稱。
- DESTINATION_RANGE 是有效的 CIDR 位址範圍,其中包含您要轉送的目的地。例如 GitHub Enterprise Edition 執行個體。例如:
8.8.8.0/24
。 - INTERNAL_IP 是從上一個步驟取得的內部 IP 值。例如:
10.128.0.2
。 - NETWORK_NAME 是您在上一節中建立的網路名稱。
- POOL_ROUTE_PRIORITY 是您要為路線指定的優先順序編號。
這個指令可確保私人集區執行個體內建構作業的任何流量會傳送至您建立的 Proxy VM,而不會直接傳送至公開網際網路。
設定路由,將 Proxy 從標記的執行個體轉送至外部目的地 IP 範圍。下列指令會建立路徑,將要求轉送至與私人集區執行個體相關聯的公開網際網路。
gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-gateway=default-internet-gateway \ --network=NETWORK_NAME \ --priority=NAT_ROUTE_PRIORITY \ --tags=NAT_TAG
其中:
- NAT_EGRESS_ROUTE_NAME 是您要給予 NAT 閘道路由的名稱。
- DESTINATION_RANGE 是您要導向的目的地地址。例如 GitHub Enterprise Edition 執行個體。例如:
8.8.8.0/24
。 - NETWORK_NAME 是您在上一節中建立的網路名稱。
- NAT_TAG 是 NAT 閘道標記的名稱,可讓您根據要求是否具有來自此 VM 的標記,有條件地轉送要求。您可以為代碼指定任何名稱。
NAT_ROUTE_PRIORITY 是您要為路線指定的優先順序編號。
這個指令可確保代理 VM 的任何流量都能導向公開網際網路。
新增防火牆規則,允許私人資源池的流量傳入 NAT 閘道 VM:
gcloud compute firewall-rules create RULE_NAME \ --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \ --network=NETWORK_NAME \ --source-ranges=RESERVED_RANGE \ --target-tags=NAT_TAG
其中:
您現在可以透過虛擬私有雲中自管理 NAT 閘道的靜態 IP 位址存取外部資源。
後續步驟
- 進一步瞭解私人集區。
- 瞭解如何設定環境以建立私人集區。
- 瞭解如何透過私人集區存取私人 JFrog Artifactory 中的資源。