建立通訊埠對應服務

本頁面說明服務供應商如何發布使用 Private Service Connect 通訊埠對應的服務。

透過 Private Service Connect 通訊埠對應,消費者端用戶端可透過單一 Private Service Connect 端點,與特定供應商 VM 上的特定服務通訊埠進行私密通訊。

事前準備

必要的角色

如要取得權限,準備透過 Private Service Connect 埠對應發布服務,請要求管理員在生產者專案中授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

建立並發布連接埠對應服務

連接埠對應服務的設定與內部直通式網路負載平衡器類似,但流量不會進行負載平衡。如要建立及發布通訊埠對應服務,請按照下列步驟操作:

  • 建立通訊埠對應 NEG
  • 將網路端點新增至通訊埠對應 NEG
  • 建立通訊埠對應服務
  • 發布通訊埠對應服務

建立通訊埠對應 NEG

通訊埠對應網路 NEG 是網路端點類型為 GCE_VM_IP_PORTMAP 的區域 NEG。建立連接埠對應 NEG 後,就無法變更其類型。

建立通訊埠對應 NEG 時,請選擇子網路。與通訊埠對應 NEG 建立關聯的網路端點,必須在這個子網路中具有主要網路介面。

主控台

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。

    前往網路端點群組

  2. 按一下「建立網路端點群組」

  3. 輸入名稱

  4. 按一下「網路端點群組類型」,然後選取「通訊埠對應 NEG (區域)」

  5. 選擇一個 [Region] (地區)

  6. 選取「網路」

  7. 選取「子網路」

  8. 點選「建立」

gcloud

使用 network-endpoints-groups create 指令

gcloud compute network-endpoint-groups create NEG \
    --region=REGION \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-endpoint-type=GCE_VM_IP_PORTMAP

更改下列內容:

  • NEG:通訊埠對應 NEG 的名稱
  • REGION:通訊埠對應 NEG 的區域
  • NETWORK:通訊埠對應 NEG 的虛擬私有雲網路
  • SUBNET:通訊埠對應 NEG 的子網路

API

regionNetworkEndpointGroups.insert 方法發出 POST 要求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups
{
  "name": "NEG",
  "networkEndpointType": "GCE_VM_IP_PORTMAP",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
}

更改下列內容:

  • PROJECT_ID:通訊埠對應 NEG 的專案 ID
  • REGION:通訊埠對應 NEG 的區域
  • NEG:通訊埠對應 NEG 的名稱
  • NETWORK:通訊埠對應 NEG 的虛擬私有雲網路
  • SUBNET:通訊埠對應 NEG 的子網路

將網路端點新增至通訊埠對應 NEG

建立一或多個通訊埠對應的網路端點,並將其附加至通訊埠對應 NEG。

通訊埠對應 NEG 的網路端點屬於可用區,且必須符合下列規定:

  • 每個網路端點是指 Compute Engine VM,且該 VM 的主要網路介面與通訊埠對應 NEG 位於同一個子網路。
  • 每個網路端點都代表專屬的用戶端目的地連接埠。
  • 每個網路端點都必須參照不重複的服務通訊埠和 VM 組合。

主控台

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。

    前往網路端點群組

  2. 按一下要更新的通訊埠對應 NEG 名稱。

  3. 按一下「新增網路端點」

  4. 按一下「VM 執行個體」,然後選取 VM。

  5. 按一下「VM port 1」(VM 通訊埠 1),然後輸入服務通訊埠。

  6. 按一下「用戶端連接埠 1」,然後輸入用戶端目的地連接埠。

  7. 如要新增其他網路端點,請按一下「新增網路端點」,然後輸入網路端點詳細資料。

  8. 點選「建立」

gcloud

使用 network-endpoint-groups update 指令。針對要附加的每個網路端點,加入 --add-endpoint 旗標。

gcloud compute network-endpoint-groups update NEG \
    --region=REGION \
    --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \
    --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT

更改下列內容:

  • NEG:通訊埠對應 NEG 的名稱
  • REGION:通訊埠對應 NEG 的區域
  • CLIENT_DESTINATION_PORT_1:第一個網路端點的用戶端目的地連接埠
  • PROJECT_ID:生產者專案的專案 ID
  • ZONE_1:第一個網路端點的可用區
  • VM_1_NAME:第一個網路端點的目的地 VM 名稱
  • VM_1_PORT:第一個網路端點的服務通訊埠
  • CLIENT_DESTINATION_PORT_2:第二個網路端點的用戶端目的地通訊埠
  • ZONE_2:第二個網路端點的可用區
  • VM_2_NAME:第二個網路端點的目的地 VM 名稱
  • VM_2_PORT:第二個網路端點的服務通訊埠

API

regionNetworkEndpointGroups.attachNetworkEndpoints 方法發出 POST 要求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints
{
  "networkEndpoints": [
    {
      "clientDestinationPort":CLIENT_DESTINATION_PORT_1,
      "instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME",
      "port": SERVICE_PORT_1
    },
    {
      "clientDestinationPort": CLIENT_DESTINATION_PORT_2,
      "instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME",
      "port": SERVICE_PORT_2
    }
  ]
}

更改下列內容:

  • PROJECT_ID:生產者專案的專案 ID
  • REGION:通訊埠對應 NEG 的區域
  • NEG:通訊埠對應 NEG 的名稱
  • CLIENT_DESTINATION_PORT_1:第一個網路端點的用戶端目的地連接埠
  • ZONE_1:第一個網路端點的可用區
  • VM_1_NAME:第一個網路端點的目的地 VM 名稱
  • SERVICE_PORT_1:第一個網路端點的服務通訊埠
  • CLIENT_DESTINATION_PORT_2:第二個網路端點的用戶端目的地連接埠
  • ZONE_2:第二個網路端點的可用區
  • VM_2_NAME:第二個網路端點的目的地 VM 名稱
  • SERVICE_PORT_2:第二個網路端點的服務通訊埠

建立通訊埠對應服務

如要建立連接埠對應服務,請完成下列步驟。

新增 NEG 後,您就無法變更與後端服務相關聯的通訊埠對應 NEG。不過,您可以更新通訊埠對應 NEG 的網路端點

轉送規則建立後,您就無法更新連線。如要連線至其他後端服務,請刪除轉送規則,然後建立新的規則。

主控台

開始設定

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡)

  2. 點選「建立負載平衡器」
  3. 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」
  4. 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」
  5. 在「公開或內部」部分,選取「內部」,然後點選「下一步」
  6. 按一下「Configure」(設定)

基本設定

  1. 輸入負載平衡器名稱
  2. 選擇一個 [Region] (地區)
  3. 選取「網路」

後端設定

  1. 在「Backend type」(後端類型) 部分,選取「Port mapping network endpoint group」(通訊埠對應網路端點群組)
  2. 選取「通訊埠對應網路端點群組」

前端設定

  1. 按一下「前端設定」
  2. 選用:輸入「名稱」
  3. 選用:輸入說明
  4. 選取「通訊協定」
  5. 選取「子網路」
  6. 按一下 [完成]
  7. 點選「建立」

gcloud

  1. 如要建立後端服務,請使用 backend-services create 指令

    gcloud compute backend-services create SERVICE \
        --load-balancing-scheme=internal \
        --region=REGION \
        --network=NETWORK
    

    更改下列內容:

    • SERVICE:後端服務名稱
    • REGION:後端服務的區域
    • NETWORK:後端服務的供應商虛擬私有雲網路
  2. 如要將通訊埠對應 NEG 新增至後端服務,請使用 backend-services add-backend 指令

    您無法將多個通訊埠對應 NEG 新增至單一後端服務。

    gcloud compute backend-services add-backend SERVICE \
        --network-endpoint-group=NEG \
        --network-endpoint-group-region=REGION
    

    NEG 替換為連接埠對應 NEG 的名稱。

  3. 如要為連接埠對應服務建立轉送規則,請使用 forwarding-rules create 指令

    轉送規則必須設定為轉送所有用戶端目的地連接埠的流量。

    gcloud compute forwarding-rules create RULE \
        --load-balancing-scheme=INTERNAL \
        --ip-protocol=PROTOCOL \
        --network=NETWORK \
        --subnet=SUBNET \
        --address=IP_ADDRESS \
        --ports=ALL \
        --region=REGION \
        --backend-service=SERVICE
    

    更改下列內容:

    • RULE:轉送規則名稱
    • PROTOCOL:轉送規則的通訊協定,可以是 TCPUDP
    • SUBNET:生產者子網路,必須與通訊埠對應 NEG 相關聯的子網路相同
    • IP_ADDRESS:轉送規則的 IP 位址,必須來自生產者子網路的 IP 位址範圍

API

  1. 如要建立後端服務,請向 regionBackendServices.insert 方法發出 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices
    {
      "name": "SERVICE",
      "loadBalancingScheme": "INTERNAL",
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
    

    更改下列內容:

    • PROJECT_ID:後端服務專案的 ID
    • REGION:後端服務的區域
    • SERVICE:後端服務名稱
    • NETWORK:生產端虛擬私有雲網路
  2. 如要將通訊埠對應 NEG 新增至後端服務,請將 PATCH 要求傳送至 regionBackendServices.patch 方法

    您無法將多個通訊埠對應 NEG 新增至單一後端服務。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE
    {
      "backends": [
        {
          "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG"
        }
      ]
    }
    

    NEG 替換為您的連接埠對應 NEG 名稱。

  3. 如要為通訊埠對應服務建立轉送規則,請將 POST要求傳送至 forwardingRules.insert 方法

    轉送規則必須設定為轉送所有用戶端目的地連接埠的流量。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
    {
      "name": "RULE",
      "loadBalancingScheme": "INTERNAL",
      "IPProtocol": "PROTOCOL",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET",
      "IPAddress": "IP_ADDRESS",
      "allPorts": true,
      "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE"
    }
    

    更改下列內容:

    • RULE:轉送規則名稱
    • PROTOCOL:轉送規則的通訊協定,可以是 TCPUDP
    • SUBNET:生產者子網路,必須與通訊埠對應 NEG 相關聯的子網路相同
    • IP_ADDRESS:轉送規則的 IP 位址,必須來自生產者子網路的 IP 位址範圍

發布通訊埠對應服務

如要讓消費者使用通訊埠對應服務,請建立服務連結來發布服務。建立服務附件時,請指定與連接埠對應服務相關聯的轉送規則。

後續步驟