介紹透過 Private Service Connect Interface 的託管服務輸出

以往當組織要提供服務給別人使用,又或者自己想要內部使用這些服務時,會需要透過虛擬私有雲 (Private VPC) 來訪問這些服務。而在 Google Cloud 環境中,我們可以使用 Private Service Connect (PSC) 這個服務,從你的 VPC 來創建安全的私有連線至 Google 、第三方、或者你自己的服務。而近期 Google 新增了 PSC 介面 (PSC interfaces) 的功能,它允許服務提供者透過共享網路介面的方式來訪問其他消費者的網絡,同時仍然保持服務提供者 (producer) 與消費者 (consumer) 的角色分離。在下文中,我們將深入探討 PSC 介面如何融入 PSC 環境中,以及如何有效的使用它們。

啟用 PSC 實現私有訪問

假設你在 Google Cloud 上運行一個新的 AI SaaS 服務,且你的客戶要求對服務進行完全私密的訪問,這包括不能離開 Google Cloud 網域。在之前的做法中,你要使用 Private Service Connect 端點 (endpoint) 來向你服務的消費者 (consumer) 主動的公開這項服務,讓他們能在自己的虛擬私有雲 (VPC) 中運行。這種訪問方式將通過 PSC 端點進行,這個端點是在客戶地址空間中的單個私有 IP 地址,且在這樣的做法下流量將完全保持在 Google Cloud 內。

圖一:託管服務的輸入(managed service ingress):流量會從消費者端私有雲(consumer VPC) 傳送到服務提供者端私有雲 (provider VPC)
icon/enlarge

上圖這樣的網路流動又叫託管服務的輸入(managed service ingress):流量會從消費者端私有雲(consumer VPC) 傳送到服務提供者端私有雲 (provider VPC)。但為了使你的 AI 服務成功運作,你還需要初始化與客戶端的連接,以擷取用於模型訓練的數據。這是因為客戶數據通常存放在不同的地方——可能在消費者的 VPC 中、在與其 peer 的 VPC 中、或在消費者的 VPC 藉由 Cloud NAT 所聯繫的外部網路中,又或者在消費者的 VPC 透過 Cloud VPN 或 Cloud Interconnect 訪問的地端中。

圖二:託管服務的輸出 (managed service egress),在託管服務需要初始化且與其用戶端連接時存在。
icon/enlarge

這種網路模式被稱為託管服務的輸出 (managed service egress),在託管服務需要初始化且與其用戶端連接時存在。可以用於以下幾種情況中:

  • 當數據處理服務需要訪問由消費者端託管的數據庫中的內容時
  • 事件中心接收並且觸發事件,並初始化輸出連接將事件發送到其他消費者端的 VPC 中

私有網路服務輸出的實施困難與挑戰

在上一段落提到的 managed service egress 實作上有一定的困難,因為通常運用 PSC 端點時,流量僅允許在輸入 (ingress) 時可以通過,這意味著它必須於由消費者端主動發起,而這其實也是 Google Cloud 刻意設計的,因為他不希望任何的服務提供者可以主動訪問消費者的 VPC ,除非這些服務提供者已經經過授權。因此要實現上述的 managed service egress 的一種方法是設置反向的 PSC 端點,其中網路附件 (network attachment)(後續內容會介紹)和負載均衡器 (load balancer) 都是部署在消費者端。這樣的設計在低規模的情況下效果都還算良好,但在消費者 VPC 中存在許多或經常更改的目的地時,這種方法就會變得具有挑戰性,因為這需要更多消費者與服務提供者之間的協調,同時也可能帶來更多複雜性。

介紹 PSC 介面

PSC 介面 (PSC interfaces) 是一種新的 PSC 模式,專為實現私有託管服務輸出 (managed service egress) 而設計,它使服務提供者可以透過共享網路接口(稱為 PSC 介面)來訪問消費者的網絡,同時仍然保持服務提供者和消費者角色的分離。

PSC 介面是透過跨組織多網路接口的虛擬機器(multi-network interface VM) 結合 PSC 授權模型 (authorization model) 來實現的。除了其本地網路接口外,服務提供者的 VM 還可以擁有一個或多個 PSC 介面,這些介面實際上位於消費者的 VPC 中。PSC 介面具有來自消費者子網的 IP 地址。(註:在此段中,「接口」確切描述了 PSC 介面在客戶操作系統上的含義:一個具有對另一網路的直接訪問權的明確網路接口。就像將乙太網路直接連接到兩個組織的網路中以將它們連接在一起一樣。)

圖三:透過這個網路接口作為消費者 VPC 的入口點,服務提供者的 VM 可以訪問消費者資源。
icon/enlarge

透過這個網路接口作為消費者 VPC 的入口點,服務提供者的 VM 可以訪問消費者資源,就像這些 VM本來就存在於生產者的 VPC 當中一樣。由於 PSC 介面在消費者 VM 的作業系統中就有如一般的網路接口,因此你可以運用整個作業系統等級的路由功能以及其強大的資源。

圖四:由於 PSC 介面是一個網路接口,所以原生支持傳遞性,因此服務提供者可以使用消費者 VPC 作為中轉站來訪問外部目的地,無需額外配置。
icon/enlarge

由於 PSC 介面是一個網路接口,所以原生支持傳遞性,因此服務提供者可以使用消費者 VPC 作為中轉站來訪問外部目的地,無需額外配置。消費者也無需部署負載均衡器並另外配置目的地位置,它所需要創建的只是一個網絡附件 (network attachment),此資源讓消費者控制哪些生產者被允許連接到它,以及 PSC 介面的 IP 地址可以使用哪個子網段。

圖五:消費者也無需部署負載均衡器並另外配置目的地位置,它所需要創建的只是一個網絡附件 (network attachment),此資源讓消費者控制哪些生產者被允許連接到它,以及 PSC 介面的 IP 地址可以使用哪個子網段。
icon/enlarge

以下是一個創建網路附件的範例:

1gcloud compute network-attachments create network-attachment-for-ai-producer \ 2 --region=us-west-2 \ 3 --connection-preference=ACCEPT_MANUAL \ 4 --producer-accept-list=producer-project \ 5 --subnets=subnet-to-host-psc-interfaces

輸出如下:

1Created [https://www.googleapis.com/compute/v1/projects/consumer-project/regions/us-west2/networkAttachments/network-attachment-for-ai-producer].

接著,生產者只需創建一個帶有參考網絡附件的 PSC 介面的 VM。如下:

1gcloud compute instances create ai-vm \ 2 --zone=us-west-2a \ 3 --machine-type=c3-standard-4 \ 4 --network-interface network=producer-vm,subnet=producer-subnet,no-address \ 5 --network-interface network-attachment=projects/consumer-project/regions/us-west2/networkAttachments/network-attachment-for-ai-producer

服務與服務間的溝通

PSC 介面是 PSC 端點的一種互補工具,且可以在同一個 VPC 中一起使用。例如,你可以啟用第三方分析服務且讓它可以訪問由不同組織所管理的第三方資料庫,只要你所使用的消費者 VPC 對這兩方均有連線。防火牆規則也與 PSC 介面兼容,因此消費者可以使用它們來控制對服務提供者的授權訪問,無論是本地還是遠程目標。

圖六:PSC 介面是 PSC 端點的一種互補工具,且可以在同一個 VPC 中一起使用。
icon/enlarge
訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。