Googl Cloud 推出 GKE 叢集新架構,升級 control plane 連線及隔離功能

以前,所有 Google Kubernetes Engine (GKE) 叢集 (cluster) 都使用 公共 IP (public IP) 作為 node 和 control plane 之間的溝通媒介。後來,考慮到資安疑慮,Google 推出了基於 VPC peering 的私有叢集 (private clusters)。從 2022 年 3 月開始,Google 開始在新的公有叢集 (public clusters) 中使用 Google Cloud 的 Private Service Connect (PSC) [1] 來實現 GKE 叢集 control plane 和 node 之間的連線,這對於配置 GKE 環境有深遠的影響。今天,Google 呈現了一個基於 PSC 的全新的 GKE control plane 連線框架,並宣布了一套包含 control plane 和 node pool 層級隔離的新功能套組,以實現更安全、更擴展、更便宜的 GKE 叢集。

基於 PSC 的 GKE 新架構

從 GKE 1.23 版本開始,所有於 2022 年 3 月 15 日之後建立的公有叢集都使用 Google Cloud 的 PSC 基礎建設來實現 GKE 叢集的 control plane 和 node 之間的連線。PSC 提供了一致的框架,透過服務網路的方式連接不同網路,並允許服務提供者和使用者使用私有 IP 位址 (private IP) 在 VPC 內部進行通訊。這次更新的最大好處是為使用 PSC 功能的 GKE 叢集做好準備。

圖(一):基於 PSC 的 GKE 簡易架構圖
icon/enlarge

Google 現在提供新的叢集隔離 (isolation) 功能是 GKE 叢集更具擴展性和安全性的演進的一部分。以前,私有 GKE 叢集是通過 VPC peering 啟用的,為實現隔離需要引入特定的網絡架構。但現在有了這個功能集,您可以:

  • 更新 GKE 叢集的 control plane,只允許透過私有的 endpoint 進行存取;
  • 創建或更新一個 GKE 叢集 node pool,包含公有或私有的 nodes;
  • 停用 GKE control plane 存取,以封鎖來自 Google Cloud VMs 和 Cloud Run 公共 IP 的流量。

此外,新的 PSC 基礎建設可以為您節省成本。傳統上,control plane 之間的通訊被視為一般的 egress,並且對公有叢集會收取一般的公共 IP 費用,若使用 kubectl 進行 provisioning 或其他操作,也是如此。使用 PSC 基礎建設,Google 減少了 control plane 與您的叢集的 nodes 之間通訊的成本,因此您可以少擔心一項網路 egress 的費用。

接下來我們來看這個功能集如何實現這些新的能力。

只允許透過私有的 endpoint 訪問 control plane

長久以來,私有叢集用戶一直可以使用公有和私有的 endpoint 來創建 control plane。現在,Google 將同樣的靈活性擴展到基於 PSC 的 GKE 公有叢集。這樣,您能夠僅透過私有的 endpoint 訪問您的 GKE control plane,但讓您的 node pool 都是公有的。這種模型為 control plane 提供了更嚴格的安全策略,同時讓您根據您的部署需求選擇需要的叢集 node。

要僅允許透過私有的 endpoint 訪問 control plane,請使用以下 gcloud 指令:

1gcloud container clusters update CLUSTER_NAME \ 2 --enable-private-endpoint
圖(二):基於 PSC 的 GKE 公有叢集架構圖
icon/enlarge

使用公有及私有混合 node pool 的叢集

所有提供託管 Kubernetes 服務的雲端供應商都提供公有和私有的叢集。一般而言,創建叢集後,叢集是公有還是私有是在叢集級別強制執行的,且無法更改。而現在,您可以切換 node pool 以使用公共或私有的 IP 位址。

您可能還需要混合使用私有和公有的 node pool。例如,您可能在叢集中運行了一些需要網路連線的工作負載 (workload) 和一些不需要網路連線的工作負載。您可以在使用公共 IP 位址的 node pool 上部署工作負載,以確保僅該 node pool 的部署可公開訪問,而不需要設置 NAT 規則。

要在現有 node pool 上啟用僅使用私有 IP 位址,請使用以下 gcloud 指令:

1gcloud container node-pools update POOL_NAME \ 2 --cluster CLUSTER_NAME \ 3 --enable-private-nodes

若要在建立 node pool 時僅啟用私有 IP 位址,請使用以下 gcloud 指令:

1gcloud container node-pools create POOL_NAME \ 2 --cluster CLUSTER_NAME \ 3 --enable-private-nodes

設置來自 Google Cloud 的存取

儘管授權網路 (authorized networks) [2] 提供了通過基於 IP 的防火牆阻止來自 Google 以外的網絡流量連接 GKE control plane 的能力,用戶還要求能夠阻止來自具有 Google Cloud 公共 IP 的 Google Cloud VM 或 Cloud Run 的流量。

為實現這一點,Google 引入了一項功能,允許您設定來自這些來源對您叢集的 control plane 的訪問權限。此功能在基於 PSC 的叢集上可用。

要從 Google Cloud VM、Cloud Run 和 Cloud Functions 刪除對 GKE control plane 的訪問權限,請使用以下 gcloud 指令 [3];同樣,您也可以在叢集創建時使用此 flag。

1gcloud container clusters update CLUSTER_NAME \ 2 --no-enable-google-cloud-access 3

選擇私有 endpoint 的地址

許多客戶喜歡將 IP 映射到堆疊 (stack) 以更輕鬆地進行故障排除和追蹤使用情況。例如:IP 區塊 x 用於基礎架構,IP 區塊 y 用於服務,IP 區塊 z 用於 GKE control plane 等等。在基於 PSC 的 GKE 叢集中,control plane 的私有 IP 位址預設來自 node 的 subnet。然而,一些客戶將 node 的 subnet 視為基礎架構並對其使用安全政策。為了區分基礎架構和 GKE control plane,現在您可以創建一個新的自訂 subnet 並將其分配給您叢集的 control plane。

1gcloud container clusters create CLUSTER_NAME \ 2 --private-endpoint-subnetwork=SUBNET_NAME

透過新的 GKE 架構可以實現什麼

透過這些新功能,您可以實現和 VPC peering 私有叢集相同的 control 隱私級別。

目前,您需要創建公有叢集,以確保它使用 PSC,但是您可以使用 gcloud 指令和 --enable-private-endpoint 的 flag,或使用 UI,在更新叢集時設定僅透過 control plane 的私有 endpoint 訪問或創建新的私有 node pool。此外,您可以在創建叢集時使用 --master-authorized-networks--no-enable-google-cloud-access 來控制訪問,以防止來自公共地址的訪問到 control plane。

此外,您還可以使用 REST API 或 Terraform Providers 實際建立新的基於 PSC 的 GKE 叢集,將預設 node pool 設置為具有私有的 endpoint。這可以通過將 enablePrivateNodes 設置為 true 來實現,而不是像當前使用 gcloud 和 UI 操作一樣,利用 GKE 公共叢集的預設值,然後再進行更新。

最後,上述功能不僅適用於 GKE Standard 叢集,還適用於 GKE Autopilot 叢集。

在評估是否準備好將這些基於 PSC 的 GKE 叢集移至使用私有叢集隔離時,請記住,control plane 的私有 endpoint 具有一些限制 [4]。

所有在版本 1.25 及更高版本上的公有叢集,如果尚未使用 PSC 基礎設施,目前都正在遷移到新的 PSC 基礎設施。因此,您的叢集可能已經在使用 PSC 與 control plane 進行通訊。

想要了解更多關於使用 PSC 與 control plane 通訊的 GKE 叢集,請參閱以下參考資料。

來源文章:

Understanding GKE’s new control plane connectivity | Google Cloud Blog

撰文者:Elsie Juan/Interested in application and infrastructure modernization

訂閱 CloudMile 電子報

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