建立通訊埠對應服務
本頁面說明服務供應商如何發布使用 Private Service Connect 通訊埠對應的服務。
透過 Private Service Connect 通訊埠對應,消費者端用戶端可透過單一 Private Service Connect 端點,與特定供應商 VM 上的特定服務通訊埠進行私密通訊。
事前準備
- 您必須在專案中啟用 Compute Engine API。
- 您必須為要附加至通訊埠對應 NEG 的每個網路端點建立 VM。所有 VM 都必須位於相同區域。
- 請參閱「關於已發布的服務」。
- 請參閱「關於 Private Service Connect 埠對應」。
必要的角色
如要取得權限,準備透過 Private Service Connect 埠對應發布服務,請要求管理員在生產者專案中授予下列 IAM 角色:
-
Compute 負載平衡器管理員 (
roles/compute.loadBalancerAdmin
) -
Compute 網路管理員 (
roles/compute.networkAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立並發布連接埠對應服務
連接埠對應服務的設定與內部直通式網路負載平衡器類似,但流量不會進行負載平衡。如要建立及發布通訊埠對應服務,請按照下列步驟操作:
- 建立通訊埠對應 NEG
- 將網路端點新增至通訊埠對應 NEG
- 建立通訊埠對應服務
- 發布通訊埠對應服務
建立通訊埠對應 NEG
通訊埠對應網路 NEG 是網路端點類型為 GCE_VM_IP_PORTMAP
的區域 NEG。建立連接埠對應 NEG 後,就無法變更其類型。
建立通訊埠對應 NEG 時,請選擇子網路。與通訊埠對應 NEG 建立關聯的網路端點,必須在這個子網路中具有主要網路介面。
主控台
前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
輸入名稱。
按一下「網路端點群組類型」,然後選取「通訊埠對應 NEG (區域)」。
選擇一個 [Region] (地區)。
選取「網路」。
選取「子網路」。
點選「建立」。
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 的專案 IDREGION
:通訊埠對應 NEG 的區域NEG
:通訊埠對應 NEG 的名稱NETWORK
:通訊埠對應 NEG 的虛擬私有雲網路SUBNET
:通訊埠對應 NEG 的子網路
將網路端點新增至通訊埠對應 NEG
建立一或多個通訊埠對應的網路端點,並將其附加至通訊埠對應 NEG。
通訊埠對應 NEG 的網路端點屬於可用區,且必須符合下列規定:
- 每個網路端點是指 Compute Engine VM,且該 VM 的主要網路介面與通訊埠對應 NEG 位於同一個子網路。
- 每個網路端點都代表專屬的用戶端目的地連接埠。
每個網路端點都必須參照不重複的服務通訊埠和 VM 組合。
主控台
前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
按一下要更新的通訊埠對應 NEG 名稱。
按一下「新增網路端點」。
按一下「VM 執行個體」,然後選取 VM。
按一下「VM port 1」(VM 通訊埠 1),然後輸入服務通訊埠。
按一下「用戶端連接埠 1」,然後輸入用戶端目的地連接埠。
如要新增其他網路端點,請按一下「新增網路端點」,然後輸入網路端點詳細資料。
點選「建立」。
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
:生產者專案的專案 IDZONE_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
:生產者專案的專案 IDREGION
:通訊埠對應 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 的網路端點。
轉送規則建立後,您就無法更新連線。如要連線至其他後端服務,請刪除轉送規則,然後建立新的規則。
主控台
開始設定
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」。
- 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 按一下「Configure」(設定)。
基本設定
- 輸入負載平衡器名稱。
- 選擇一個 [Region] (地區)。
- 選取「網路」。
後端設定
- 在「Backend type」(後端類型) 部分,選取「Port mapping network endpoint group」(通訊埠對應網路端點群組)。
- 選取「通訊埠對應網路端點群組」。
前端設定
- 按一下「前端設定」。
- 選用:輸入「名稱」。
- 選用:輸入說明。
- 選取「通訊協定」。
- 選取「子網路」。
- 按一下 [完成]。
- 點選「建立」。
gcloud
如要建立後端服務,請使用
backend-services create
指令。gcloud compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK
更改下列內容:
SERVICE
:後端服務名稱REGION
:後端服務的區域NETWORK
:後端服務的供應商虛擬私有雲網路
如要將通訊埠對應 NEG 新增至後端服務,請使用
backend-services add-backend
指令。您無法將多個通訊埠對應 NEG 新增至單一後端服務。
gcloud compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGION
將
NEG
替換為連接埠對應 NEG 的名稱。如要為連接埠對應服務建立轉送規則,請使用
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
:轉送規則的通訊協定,可以是TCP
或UDP
SUBNET
:生產者子網路,必須與通訊埠對應 NEG 相關聯的子網路相同IP_ADDRESS
:轉送規則的 IP 位址,必須來自生產者子網路的 IP 位址範圍
API
如要建立後端服務,請向
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
:後端服務專案的 IDREGION
:後端服務的區域SERVICE
:後端服務名稱NETWORK
:生產端虛擬私有雲網路
如要將通訊埠對應 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 名稱。如要為通訊埠對應服務建立轉送規則,請將
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
:轉送規則的通訊協定,可以是TCP
或UDP
SUBNET
:生產者子網路,必須與通訊埠對應 NEG 相關聯的子網路相同IP_ADDRESS
:轉送規則的 IP 位址,必須來自生產者子網路的 IP 位址範圍
發布通訊埠對應服務
如要讓消費者使用通訊埠對應服務,請建立服務連結來發布服務。建立服務附件時,請指定與連接埠對應服務相關聯的轉送規則。