從其他虛擬私有雲網路存取服務

本教學課程說明如何以服務用戶的身分,建立 Private Service Connect 端點,存取已發布的服務。當您將要求傳送至端點時,Private Service Connect 會將這些要求轉送至已發布的服務。

本教學課程適用於雲端架構師、網路架構師、網路管理員和 IT 管理員。

目標

  • 為服務用戶資源設定網路
  • 建立端點
  • 測試存取端點

費用

在本文件中,您將使用下列 Google Cloud計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator。

初次使用 Google Cloud 的使用者可能符合免費試用期資格。

完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」。

事前準備

  1. 完成本系列的前兩篇教學課程:
  2. 建立或選取專案,用於服務用戶資源。這個專案稱為「CONSUMER_PROJECT」
    1. 前往 Google Cloud 控制台的專案選擇器頁面。

      前往專案選取器

    2. 選取或建立 Google Cloud 專案。

      選取或建立專案所需的角色

      • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
      • 建立專案:如要建立專案,您需要「專案建立者」角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色。
  3. 如果尚未啟用,請啟用 Compute Engine API。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  4. 請確認您在專案中具備下列角色: Compute Engine > Compute Network Admin、Compute Engine > Compute 執行個體管理員

    檢查角色

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

      前往「IAM」頁面
    2. 選取專案。
    3. 在「主體」欄中,找出所有可識別您或您所屬群組的資料列。如要瞭解自己所屬的群組,請與管理員聯絡。

    4. 針對指定或包含您的所有資料列,檢查「角色」欄,確認角色清單是否包含必要角色。

    授予角色

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

      前往「IAM」頁面
    2. 選取專案。
    3. 按一下「Grant access」(授予存取權)。
    4. 在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是指 Google 帳戶的電子郵件地址。

    5. 按一下「Select a role」(選取角色),然後搜尋角色。
    6. 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
    7. 按一下「Save」(儲存)。

設定網路

以下各節說明如何建立網路和子網路來代管端點,以及如何建立防火牆規則,允許透過 SSH 存取用於測試端點的用戶端 VM。

建立網路和子網路

如要建立服務用戶網路和子網路,請按照下列步驟操作。

控制台

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

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

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

  3. 在「Name」(名稱) 中輸入 consumer-network。

  4. 在「子網路建立模式」部分,選取「自訂」。

  5. 在「New subnet」(新的子網路) 區段中,輸入下列資訊。

    1. 在「Name」(名稱) 中輸入 consumer-subnet。
    2. 在「Region」(區域),選取您建立的已發布服務所在的區域。
    3. 在「IP stack type」(IP 堆疊類型),選取「IPv4 (single-stack)」(IPv4 (單一堆疊))。
    4. 在「IPv4 範圍」中,輸入 192.168.10.0/24。
    5. 按一下「完成」。
  6. 點選「建立」。

gcloud

  1. 建立自訂模式虛擬私有雲網路:

    gcloud compute networks create consumer-network --subnet-mode=custom
    
  2. 在 consumer-network 網路中建立子網路。

    gcloud compute networks subnets create consumer-subnet \
        --network=consumer-network \
        --range=192.168.10.0/24 \
        --region=REGION
    

    將 REGION 替換為您建立的已發布服務所屬區域。

設定防火牆規則

建立名為 fw-allow-ssh 的防火牆規則,允許來自 0.0.0.0/0 的 SSH 流量傳送至具有 allow-ssh 網路標記的 VM。

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 如要允許連入 SSH 連線,請按一下「建立防火牆規則」,並使用下列設定:

    • 在「Name」(名稱) 中輸入 fw-allow-ssh。
    • 在「Network」(網路) 中選取 consumer-network。
    • 在「Priority」(優先順序) 中輸入 1000。
    • 在「流量方向」部分,選取「輸入」。
    • 「相符時執行的動作」請選取「允許」。
    • 在「Targets」(目標) 中選取 Specified target tags。
    • 在「Target tags」(目標標記) 部分,輸入 allow-ssh。
    • 「來源篩選器」請選取「IPv4 範圍」。
    • 在「來源 IPv4 範圍」部分,輸入 0.0.0.0/0。
    • 在「通訊協定和通訊埠」部分,選取「指定的通訊協定和通訊埠」,然後勾選「TCP」核取方塊。在「Ports」(通訊埠) 欄中,輸入 22。
  3. 按一下「建立」。

gcloud

  1. 建立 fw-allow-ssh 防火牆規則,允許透過 SSH 連線至具有 allow-ssh 網路標記的 VM。

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=consumer-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=0.0.0.0/0 \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

建立端點

建立指向您所建立已發布服務的端點。

控制台

  1. 前往 Google Cloud 控制台的「Private Service Connect」頁面。

    前往 Private Service Connect

  2. 按一下「已連線的端點」分頁標籤。

  3. 按一下「連結端點」。

  4. 在「目標」部分,選取「已發布的服務」。

  5. 在「目標服務」部分,輸入 projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service。

    將 PRODUCER_PROJECT 替換為已發布服務的專案 ID。將 REGION 替換為已發布服務的區域。

  6. 在「Endpoint name」(端點名稱) 中輸入 ep-1。

  7. 在「Network」(網路) 中選取 consumer-network。

  8. 在「Subnetwork」(子網路) 中,選取 consumer-subnet。

  9. 按一下「IP 位址」下拉式選單,然後選取「建立 IP 位址」。

    1. 在「Name」(名稱) 中輸入 ep-ip-1。
    2. 在「Static IP address」(靜態 IP 位址) 中,選取 Let me choose。
    3. 在「自訂 IP 位址」中,輸入 192.168.10.5。
    4. 點選「保留」。
  10. 按一下「新增端點」。

gcloud

  1. 預留要指派給端點的內部 IP 位址。

    gcloud compute addresses create ep-ip-1 \
        --region=REGION \
        --subnet=consumer-subnet \
        --addresses=192.168.10.5
    

    將 REGION 替換為您建立的已發布服務所屬區域。

  2. 建立轉送規則,將端點連至服務供應商的服務連結。

    gcloud compute forwarding-rules create ep-1 \
        --region=REGION \
        --network=consumer-network \
        --address=ep-ip-1 \
        --target-service-attachment=projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service
    

    更改下列內容:

    • PRODUCER_PROJECT:服務供應商專案的專案 ID。

    • REGION:服務連結的區域。

測試存取端點

如要測試端點和已發布的服務是否正常運作,請建立測試 VM,並從該 VM 將要求傳送至端點。

建立用於測試的用戶端 VM

在與端點相同的區域中建立用戶端 VM。

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 點選「建立執行個體」。

  3. 在「Name」(名稱) 中輸入 consumer-test。

  4. 「區域」請選取與後端 VM 相同的區域。

  5. 在「Zone」(可用區),選取該區域的可用區。

  6. 按一下「網路」,然後設定下列欄位:

    1. 在「Network tags」(網路標記) 部分,輸入 allow-ssh。
    2. 在「網路介面」中,選取下列項目:
      • 在「網路」中選取 consumer-network
      • 在「子網路」中,選取 consumer-subnet
  7. 點選「建立」。

gcloud

gcloud compute instances create consumer-test \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=consumer-subnet

將 ZONE 替換為與後端 VM 位於相同區域的可用區。

測試連線能力

這項測試會從用戶端 VM 聯絡端點。預期的行為是在負載平衡器的後端 VM 之間分配流量。

  1. 連線至用戶端 VM 執行個體。
    gcloud compute ssh consumer-test --zone=ZONE
    
    將 ZONE 替換為用戶端 VM 所在可用區。
  2. 使用 curl 聯絡端點的 IP 位址,向端點發出網頁要求。重複發出要求,系統便會顯示來自不同後端 VM 的回應。由於每個後端 VM 上的 /var/www/html/index.html 內容,產生回應的 VM 名稱會顯示在 HTML 回應的文字中。舉例來說,預期回應看起來會像 Page served from: vm-1 和 Page served from: vm-2。
    curl -s http://192.168.10.5
    

清除所用資源

為避免因為本教學課程所用資源,導致系統向 Google Cloud 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。

刪除專案

刪除生產者專案 (PRODUCER_PROJECT) 和消費者專案 (CONSUMER_PROJECT)。

    刪除 Google Cloud 專案:

    gcloud projects delete PROJECT_ID

後續步驟