本頁面將概略說明 Google Kubernetes Engine (GKE) 叢集中的 Private Service Connect。
本頁面假設您已瞭解下列事項:
- 網路基礎知識,例如 IP 位址
- 虛擬私有雲網路
總覽
Private Service Connect (PSC) 是 Google Cloud網路基礎架構的一部分,可讓 GKE 叢集安全地以私密方式使用 Google Cloud 或地端部署環境中託管的服務,不必公開這些服務。使用 PSC 時, Google Cloud 會將內部 IP 位址指派給控制層,以便將要求轉送至 GKE 叢集管理 API,讓您管理叢集,且流量不會經過公開網際網路。PSC 提供一致的架構,可透過服務網路方法連結不同網路,並允許服務生產者和消費者使用虛擬私有雲內部的內部 IP 位址進行通訊。
在採用 PSC 基礎架構的 GKE 叢集中,叢集控制層與節點之間的所有通訊都會私下進行。您也可以在控制層和節點集區層級隔離叢集,不必管理複雜的虛擬私有雲對等互連設定。
啟用 Private Service Connect 的叢集優點
安全性:PSC 會在 GKE 叢集控制層和節點之間建立私人連線,確保流量完全保留在 Google 的網路中,不會流向公用網際網路。將未經授權存取的風險降至最低。
簡化連線能力:如果是 PSC 叢集,您不必管理控制層端點的特定子網路。PSC 端點完全位於叢集網路內,因此不需要複雜的網路設定。
擴充性:您可以建立最多 1000 個啟用 PSC 的叢集,滿足高資源需求。相較之下,使用虛擬私有雲網路對接的叢集,每個可用區或區域最多只能建立 75 個叢集。
可自訂的設定:PSC 可讓您獨立控管叢集控制層、節點集區或工作負載的隔離狀態,進一步提升叢集的可擴充性和安全性。您可以在叢集中設定私人和公開節點集區。
彈性:叢集建立後,您可以隨時變更隔離設定。您可以切換控制層的公開和私人存取權,並變更網際網路對節點集區和工作負載的存取權,不必建立新叢集。
限制
控制層有內部和外部端點。控制層的內部端點不支援您設定的任何 Webhook 網址中的內部 IP 位址。如果網址中的內部 IP 位址有 Webhook,請按照下列步驟操作,以解決不相容問題:
建立不含選取器的無頭 Service,手動管理這個 Service 導向流量的端點。以下範例顯示在 3000 埠監聽 Webhook 的 Service:
apiVersion: v1 kind: Service metadata: name: <service-name> spec: clusterIP: None ports: - port: 3000 targetPort: 3000為所需目的地建立對應端點。舉例來說,如果您的 Webhook 在網址中使用內部 IP 位址
10.0.0.1,您可以建立下列端點:apiVersion: v1 kind: Endpoints metadata: name: <service-name> subsets: - addresses: - ip: 10.0.0.1 ports: - port: 3000更新 Webhook 設定:在 Webhook 設定中,刪除含有內部 IP 位址的網址,並新增您在第一個步驟中建立的服務。例如:
... kind: ValidatingWebhookConfiguration ... webhooks: - name: <webhook-name> ... clientConfig: service: name: <service-name> namespace: <namespace> path: "/validate" port: 3000在上例中,網路鉤子的路徑為
/validate,並在通訊埠 3000 監聽。驗證 Webhook:確認 Webhook 能繼續接收 API 伺服器要求,並根據自訂邏輯核准、拒絕或修改要求。如果驗證 Webhook 時發生錯誤,您可能需要建立新憑證,然後使用新憑證詳細資料更新 Webhook 設定。例如:
... kind: ValidatingWebhookConfiguration ... webhooks: - name: <webhook-name> ... clientConfig: ... caBundle: <new-certificate> ...
架構
下圖概述了使用 PSC 的叢集架構:
以下是啟用 PSC 的叢集核心元件:
控制層:每個 GKE 叢集都有 Kubernetes API 伺服器,由控制層管理。控制層會在 Google 管理專案的虛擬私有雲網路中,透過虛擬機器 (VM) 執行。區域叢集具有多個控制層副本,每個副本都會在自己的 VM 上執行。
控制層同時具有內部端點 (Private Service Connect 端點),用於內部叢集通訊,以及外部端點。您可以選擇停用外部端點。 節點與控制層之間的流量完全使用內部 IP 位址轉送。如要瞭解叢集設定,請參閱「驗證控制層設定」。
虛擬私有雲網路:這是虛擬網路,您可以在其中建立子網路,並為叢集的節點和 Pod 專門設定內部 IP 位址範圍。
Private Service Connect 端點:這是叢集控制層中的內部端點,位於專案的虛擬私有雲網路中。PSC 端點是存取叢集控制層的進入點。
服務連結:服務連結是一種資源,可在虛擬私有雲網路和供應商虛擬私有雲網路之間,建立安全且私密的連線。如上圖所示,PSC 端點會透過私有連線存取服務連結,並允許節點與控制平面之間的流量流動。
設定叢集存取權
在啟用 PSC 的叢集上,您可以透過多種方式設定控制層存取權和節點存取權。叢集建立後,您隨時可以變更這些設定。如要設定叢集存取權,請參閱「自訂網路隔離」。
控制層存取權
僅透過 DNS 型端點存取控制層 (建議)。您可以建立 IAM 允許政策,授權要求存取控制層。
僅透過以 IP 為基礎的端點存取控制層。您可以選擇同時使用控制層的外部和內部端點,也可以停用外部端點,只允許從 Google 保留的 IP 位址 (用於叢集管理) 和 GKE 叢集內部 IP 位址存取。
如果您使用 IP 位址,建議您使用授權網路,限制叢集控制層的存取權。您也可以透過授權網路,封鎖來自 Google Cloud 虛擬機器、Cloud Run 或 Cloud Run functions 的存取要求,這些要求來自 Google Cloud 外部 IP。
透過 DNS 端點「和」IP 端點存取控制層。
叢集節點存取權
啟用 PSC 的叢集可設定混合模式叢集。您可以設定叢集,讓節點具有內部或外部存取權。您也可以根據使用的叢集類型,變更節點網路設定:
對於 Autopilot 叢集,您可以設定部分工作負載在私人節點上執行,其他工作負載則在公開節點上執行。舉例來說,您可能在叢集中執行混合工作負載,其中有些需要網路連線能力,有些則不需要。您可以在具有外部 IP 位址的節點上部署工作負載,確保只有這類工作負載可公開存取。
如果是標準叢集,您可以為部分節點佈建內部 IP 位址,其他節點則可使用外部 IP 位址。
使用 Private Service Connect 的叢集
如要檢查叢集是否使用 Private Service Connect,請執行 gcloud container clusters describe 指令。如果叢集使用 Private Service Connect,privateClusterConfig 資源會具有下列值:
peeringName欄位空白或不存在。privateEndpoint欄位已指派值。
如要為叢集啟用 PSC,請在 1.29 以上版本建立叢集。否則,如果是 1.28 版和更早版本,請建立叢集,但不要啟用私人節點。叢集建立完成後,您隨時可以更新這項設定並啟用私人節點。
後續步驟
- 瞭解如何在 GKE 中自訂網路區隔。