本頁面將概略說明 Google Kubernetes Engine (GKE) 叢集中的 Private Service Connect。
本頁面假設您已瞭解下列事項:
- 網路基礎知識,例如 IP 位址
- 虛擬私有雲網路
總覽
Private Service Connect (PSC) 是 Cloud de Confiance by S3NS網路基礎架構的一部分,可讓 GKE 叢集安全地以私密方式使用 Cloud de Confiance by S3NS 或地端部署環境中託管的服務,不必公開這些服務。使用 PSC 時, Cloud de Confiance by S3NS 會將內部 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 位址,建議您使用授權網路,限制叢集控制層的存取權。您也可以透過授權網路,封鎖來自 Cloud de Confiance by S3NS 虛擬機器、Cloud Run 或 Cloud Run functions 的存取要求,這些要求來自 Cloud de Confiance by S3NS 外部 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 中自訂網路區隔。