本頁說明如何設定私人集區,透過靜態外部 IP 存取外部資源。
如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導):
事前準備
- 
  
  
    
      Enable the Cloud Build, Compute Engine, and Service Networking APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 如要取得設定私人連線所需的權限,請要求管理員在虛擬私有雲網路所在的 Cloud 專案中,授予您 Compute Engine 網路管理員 ( - roles/compute.networkAdmin) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱管理存取權。
- 如要在本頁面使用 - gcloud指令,請安裝 Google Cloud CLI。
Create a VPC network
主控台
如要使用 Google Cloud 控制台建立虛擬私有雲網路,請完成下列步驟:
- 在 Google Cloud 控制台中開啟「VPC networks」(虛擬私有雲網路) 頁面。 
- 按一下「建立虛擬私有雲網路」,建立新網路。 - 您會看到「建立虛擬私有雲網路」頁面。 
- 輸入網路的名稱。 
- 在「子網路建立模式」底下選取「自動」。 
- 如要進一步自訂其他欄位,請參閱「建立及管理虛擬私有雲網路」。否則,請保留所有欄位。 
- 按一下「建立」,建立虛擬私有雲網路。 
gcloud
如要使用 gcloud 指令列工具建立 VPC 網路,請在終端機中輸入下列指令,其中的 NETWORK_NAME 是 VPC 網路的名稱:
gcloud compute networks create NETWORK_NAME \
  --subnet-mode=auto
如要進一步瞭解如何建立及管理虛擬私有雲網路,請參閱「建立及管理虛擬私有雲網路」。
建立私人連線
主控台
如要在虛擬私有雲網路與服務生產端網路之間建立私人連線,請完成下列步驟:
- 在 Google Cloud 控制台中開啟「VPC networks」(虛擬私有雲網路) 頁面。 
- 按一下網路名稱。 - 畫面會顯示「虛擬私有雲網路詳細資料」頁面。 
- 按一下「Private Service Connection」(私人服務連線) 分頁標籤。 - 選取「已分配的服務 IP 範圍」分頁標籤。 
- 按一下「Allocate IP range」(分配 IP 範圍)。 - 畫面上會顯示「Allocate an internal IP range」(分配內部 IP 範圍) 彈出式方塊。 - 輸入 IP 範圍的名稱。 
- 在「IP 範圍」下方,選取「自動」。 
- 在「Prefix length」(前置字元長度) 欄位中,輸入網路的前置字元長度。 
- 按一下「分配」分配 IP 範圍。 
 
- 選取「Private Connections to Services」(私人服務連線) 分頁標籤。 
- 按一下「建立連線」。 - 畫面上會顯示「建立私人連線」彈出式視窗。 - 在「Assigned allocation」(已指派的分配範圍) 下方,選取您的 IP 範圍。 
- 按一下「連線」。 
 - 現在您會在「Private Connections to Services」(私人服務連線) 分頁下方的表格中,看到連線。 - 按一下「Enable」(啟用) (匯出自訂路徑),確保虛擬私有雲的路徑會套用至執行私人集區執行個體的網路。 
 
網路設定完成。
gcloud
如要在虛擬私有雲網路與服務生產端網路之間建立私人連線,請完成下列步驟:
- 在終端機中輸入下列指令,為服務分配 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 是您的 VPC 網路名稱,例如 my-vpc-network。
- PROJECT_ID 是含有虛擬私有雲網路的專案 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 是您的 VPC 網路名稱,例如 my-vpc-network。
- PROJECT_ID 是含有虛擬私有雲網路的專案 ID。
 
- 在終端機中輸入下列指令,確保 VPC 的路徑會套用至執行私人集區執行個體的網路: - gcloud compute networks peerings update servicenetworking-googleapis-com \ --export-custom-routes \ --network=VPC_NETWORK \ --project=PROJECT_ID- 其中: - VPC_NETWORK 是您的 VPC 網路名稱,例如 my-vpc-network。
- PROJECT_ID 是含有虛擬私有雲網路的專案 ID。
 
- VPC_NETWORK 是您的 VPC 網路名稱,例如 
網路設定完成。
如要進一步瞭解如何設定網路,請參閱在虛擬私有雲網路與服務供應商網路之間設定私人連線。
建立私人集區
主控台
如要使用 Google Cloud 控制台建立私人集區,請完成下列步驟:
- 在 Google Cloud 控制台中開啟「Worker Pool」(工作站集區) 頁面: 
- 選取要建立私人集區的專案。 
- 在「Worker pool」(工作站集區) 頁面中,按一下「Create」(建立)。 - 畫面會顯示「Create private pool」(建立私人集區) 面板。 
- 在「Create private pool」(建立私人集區) 側邊面板中,輸入下列資訊: - 輸入私人集區的名稱。 
- 從下拉式選單中選取「區域」。 
- 在「Network」(網路) 下方,輸入下列資訊: 
 - 專案:輸入專案 ID 或編號。
- 「Network」(網路):輸入虛擬私有雲網路的名稱。
 - (選用) 如要採用限制最嚴格的網路設定,請取消勾選「指派外部 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 位址不是靜態,也無法設定。這些 ID 由Google Cloud指派。如要設定私人集區,透過靜態外部 IP 從私人網路存取外部資源,您必須在專案中設定虛擬機器 (VM),做為自我管理的 NAT 閘道,將要求 Proxy 至公開網際網路。接著,您必須設定自訂路徑,將這些要求轉送至 VM,確保路徑會與服務網路專案交換。
本節說明如何設定私人集區,透過靜態外部 IP 存取外部資源,請完成下列步驟:
- 建立開機指令碼,將 VM 設定為 Proxy 傳送至 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。如果您在建立虛擬私有雲網路時,於「Subnet connection mode」(子網路連線模式) 下選取「Automatic」(自動),則不需要指定這個欄位。
- 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 是您要為路徑指定的優先順序編號。 
 - 這個指令可確保 Proxy 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- 其中: 
現在,您可以透過 VPC 中自行管理的 NAT 閘道靜態 IP 位址,存取外部資源。
後續步驟
- 進一步瞭解私人集區。
- 瞭解如何設定環境來建立私人集區。
- 瞭解如何透過私人集區存取私人 JFrog Artifactory 中的資源。