您可以使用動態成員資格準則中的 Kubernetes 成員類型來建立一般群組,以符合進入或離開 Antrea Kubernetes 叢集的流量。
然後,您可以在分散式防火牆規則或閘道防火牆規則中使用這些一般群組,來保護 NSX 環境中的虛擬機器與 Antrea Kubernetes 叢集中的網繭之間的流量。
必要條件
- 已將 Antrea Kubernetes 叢集登錄到 NSX。
- 在 NSX 部署中套用適當的安全性授權,以授權系統設定分散式防火牆安全性原則。
保護從 Antrea Kubernetes 叢集流向 NSX 中虛擬機器的流量
- Kubernetes 節點
- Antrea 出口
- Antrea IP 集區
下圖顯示從 Antrea Kubernetes 叢集流向 NSX 邏輯網路中虛擬機器的一般流量。
正如此流量圖中所示,為了符合離開 Antrea Kubernetes 叢集的流量,可能會出現以下案例:
- 案例 1:透過出口 (閘道節點) 的 SNAT
-
您可以在 Antrea Kubernetes 叢集中部署出口資源。在出口資源的資訊清單檔案中,選取要套用出口資源的網繭分組準則。您可以在資訊清單檔案中手動指定出口 IP,或者 Antrea CNI 可以從 ExternalIPPool 自訂資源配置一個出口 IP。
重要: 出口 IP 位址在實體網路上必須是可路由的,且必須可從 K8s 叢集中的所有節點來連線。Antrea CNI 會將來自所選網繭的傳出流量,傳送至閘道節點。閘道節點會執行來源位址轉譯 (SNAT),以將來源 IP (網繭 IP) 轉譯為出口 IP。
例如,在上述流量圖中,會將在 node1 上執行的 pod1 和 pod2 的傳出流量傳送到閘道節點。閘道節點會將網繭 IP 位址轉譯為 egress1 IP。
若要進一步瞭解出口資源,請參閱 Antrea 說明文件入口網站中的《出口指南》。
可作為閘道節點的叢集節點,取決於節點網路拓撲,該拓撲由您的實體網路管理員或 IaaS 網路管理員控制。閘道節點具有以下兩項特性:- 實體網路允許節點以可路由 IP 作為來源 IP 來存取外部網路。
- (選用) 設定實體閘道上的實體防火牆,以篩選來自閘道節點的傳出流量。
- 範例 1:假設您的 Antrea Kubernetes 叢集具有三個節點:node1、node2 和 node3。叢集中的 node1 和 node2 是特殊節點,因為指派了兩個網路介面給它們。其中一個介面用於 K8s 叢集通訊,另一個介面用來連線至外部網路。node3 只獲指派一個網路介面,用於叢集通訊。在此案例中,只有 node1 和 node2 才能作為閘道節點。
- 範例 2:假設 K8s 叢集中的這三個節點都只獲指派一個網路介面,且網路管理員已將實體防火牆設定為僅允許 node-1 和 node-2 MAC 位址造訪網際網路。在此案例中,node1 和 node2 可以作為閘道節點。
- 範例 3:假設這三個節點均可造訪網際網路。網路管理員已在實體閘道上設定了實體防火牆,且防火牆想要篩選來自特定出口 IP 的流量。在此案例中,這三個節點均可作為閘道節點。
以下段落說明這項實作特定的限制:
Antrea Kubernetes 叢集外部的任何實體主機或虛擬機器都不能作為閘道節點,以透過通道來傳輸網繭的傳出流量。其原因在於,Antrea 代理程式 會維護出口 IP 位址,且此代理程式在 K8s 叢集的每個節點上,是以網繭形式執行。因此,您要作為閘道節點的實體主機或虛擬機器,必須是 K8s 叢集的一部分。
- 案例 2:透過節點的 SNAT
-
在此案例中,並沒有在任何出口資源的資訊清單檔案中,明確選取網繭。
網繭的傳出流量會假裝傳到節點 IP,再將流量送出到 IaaS 網路。例如,在上述流量圖中,SNAT 規則會將來源 IP (pod3 IP、pod4 IP) 轉譯為 node2 IP,然後將網繭的傳出流量送出到 IaaS 網路。
- 案例 3:可路由網繭直接橋接到 IaaS 網路
-
可路由網繭表示在底層網路上將可路由 IP 位址指派給網繭。通常,可以透過設定在節點上的 PodCIDR 內容,將私人 IP 位址指派給網繭。當網繭想要存取 K8s 叢集外部的網路時,流量需要透過 SNAT 作業以將來源 IP (網繭 IP) 轉譯為可路由 IP。
如果您的 Antrea Kubernetes 叢集部署在具有 Tanzu Kubernetes Grid 服務 (TKGS) 的 NSX 覆疊網路上,則會有一種機制可供 Tanzu Kubernetes 叢集 (TKC) 節點向 NSX 要求可路由子網路,並以這個可路由子網路作為節點的 PodCIDR 內容。之後,網繭就可以取得可路由 IP 位址。若要進一步瞭解如何為 TKC 設定可路由網繭網路,請參閱 VMware vSphere with Tanzu 說明文件。
如果您的 Antrea Kubernetes 叢集未部署在 NSX 覆疊網路上,Kubernetes 管理員可以確保底層網路中保留了可路由子網路或可路由 IP 範圍。管理員可以在 IPPool 自訂資源的資訊清單檔案中,設定子網路或 IP 範圍。之後,Antrea CNI 就可以將可路由 IP 位址配置給網繭。
例如,在上述流量圖中,在 node5 上執行的 pod5 會從 IPPool 自訂資源取得可路由 IP。
若要進一步瞭解 IPPool 自訂資源,請參閱 Antrea 說明文件入口網站中的《Antrea IPAM 指南》。
保護從 NSX 中的虛擬機器流向 Antrea Kubernetes 叢集的流量
- Kubernetes 服務
- Kubernetes 入口
- Kubernetes 閘道
- Antrea IP 集區
下圖顯示從 NSX 邏輯網路中的虛擬機器流向 Antrea Kubernetes 叢集的一般流量。
正如此流量圖中所示,為了符合進入 Antrea Kubernetes 叢集的流量,可能會出現以下案例:
- 案例 1:透過虛擬 IP 和連接埠向外部流量公開網繭
-
您可以使用以下本機 Kubernetes 資源,來實作第三方負載平衡器解決方案,從而向外部流量公開網繭:
- 入口:充當第 7 層負載平衡器。入口資源會提供虛擬 IP 位址 (VIP),並公開某些連接埠 (TCP/UDP)。
- 閘道:充當第 4 層和第 7 層負載平衡器。閘道資源將提供 VIP,並公開某些連接埠 (TCP/UDP)。
- LoadBalancer 類型的服務:充當第 4 層負載平衡器。該服務將提供 VIP,並公開某些連接埠 (TCP/UDP)。
備註: 儘管入口和閘道資源可以充當第 7 層負載平衡器,但對於 NSX 中的分散式防火牆規則和閘道防火牆規則,它們會藉由使用 IP 位址和連接埠來符合傳入流量,從而顯示為第 3 層或第 4 層負載平衡器。 - 案例 2:透過節點 IP 和連接埠向外部流量公開網繭
-
- 類型為 NodePort 的 Kubernetes 服務:此服務會觸發 K8s 叢集中的所有節點,以在節點上為每個服務連接埠開啟一個連接埠。該服務可以透過節點 IP 和連接埠進行連線。節點會對流量執行 SNAT 和 DNAT。
- 類型為 ClusterIP 且啟用了 NodePortLocal 功能的 Kubernetes 服務:此服務會要求您在 Antrea 代理程式 上啟用 NodePortLocal 功能,並在 Kubernetes 服務的資訊清單檔案中新增註解。Antrea CNI 可以辨識註解,並為網繭執行所在節點上的每個網繭,開啟一個連接埠。NodePortLocal 會避免在 K8s 叢集的所有節點上開啟連接埠,從而節省可用的連接埠範圍。它還會避免執行 SNAT 作業,並保留原始用戶端 IP。
若要進一步瞭解 NodePortLocal 功能,請參閱 Antrea 說明文件入口網站中的《NodePortLocal 指南》。
- 案例 3:透過可路由網繭 IP 位址向外部流量公開網繭
-
Antrea 支援在 Antrea Kubernetes 叢集中部署 IPPool 自訂資源,從而將可路由 IP 位址指派給網繭。網繭會從此集區中配置 IP 位址,並直接橋接到 IaaS 網路。
支援的 IaaS 網路
- 以 vSphere 為基礎的內部部署資料中心:作為 Tanzu Kubernetes 叢集,並且是使用 Tanzu Kubernetes Grid 服務 來建立的。叢集由 Tanzu Kubernetes Grid (TKG) 2.0 和 vSphere 所管理。
- VMware Cloud:作為 Tanzu Kubernetes 叢集,由 TKG 2.0 和 VMC SDDC 所管理。
- 公有雲:作為公有雲平台上的受管理 Kubernetes 叢集。
- 實體伺服器:作為裸機伺服器上的 Kubernetes 叢集。
- OpenShift:
- Antrea CNI 部署在 OpenShift 叢集中,而 OpenShift 則是在安裝程式所佈建的基礎結構 (IPI) 模式下,或是在使用者佈建的基礎結構 (UPI) 模式下部署。
- 基礎結構提供者可以是下列其中一個:vSphere、Amazon Web Services (AWS)、Azure、OpenStack、Google Cloud Platform (GCP)、裸機。
套用防火牆原則時的建議做法
分散式防火牆和閘道防火牆都允許您在防火牆規則的來源和目的地中,指定使用 Kubernetes 成員類型的一般群組。因此,您可以靈活決定是參考分散式防火牆中的群組,還是閘道防火牆中的群組。
- 使用 NSX 閘道防火牆,以允許或封鎖從 Antrea Kubernetes 叢集流向 NSX 網路中虛擬機器的流量。
此做法有助於您在流量進入 NSX 覆疊網路時,儘早篩選流量。
- 使用 NSX 分散式防火牆,以允許或封鎖從 NSX 網路中的虛擬機器流向 Antrea Kubernetes 叢集的流量。
此做法有助於您在流量離開 NSX 覆疊網路中的虛擬機器時,儘早篩選流量。
Kubernetes 成員類型在防火牆原則中的用法摘要
下表彙總了您可以在 NSX 一般群組中使用的 Kubernetes 成員類型,以符合防火牆規則中的流量。
成員類型 | 範圍 | 在防火牆原則中的用法 |
---|---|---|
Kubernetes 叢集 |
叢集 |
在動態群組準則中顯示為 AND 條件,以符合特定叢集中的資源。 |
Kubernetes 命名空間 |
命名空間 |
在動態群組準則中顯示為 AND 條件,以符合特定命名空間中的資源。 |
Antrea 出口 |
叢集 |
符合來自 Antrea Kubernetes 叢集的傳出流量,其中來源 IP = 出口 IP |
Antrea IP 集區 | 叢集 |
符合來自 Antrea Kubernetes 叢集的傳出流量,其中來源 IP 位於 IP 範圍內。 符合進入 Antrea Kubernetes 叢集的流量,其中目的地 IP 位於 IP 範圍內。 |
Kubernetes 節點 |
叢集 |
符合來自 Antrea Kubernetes 叢集的傳出流量,其中來源 IP 位於叢集節點 IP 位址中。 |
Kubernetes 入口 |
命名空間 |
符合進入 Antrea Kubernetes 叢集的流量,其中目的地 IP 位於入口 IP 位址中。 |
Kubernetes 閘道 |
命名空間 |
符合進入 Antrea Kubernetes 叢集的流量,其中目的地 IP 位於閘道 IP 位址中。 |
Kubernetes 服務 (類型=LoadBalancer) |
命名空間 |
符合進入 Antrea Kubernetes 叢集的流量,其中目的地 IP 位於 LoadBalancer IP 位址中。 |
Kubernetes 服務 (類型=NodePort) |
命名空間 |
符合進入 Antrea Kubernetes 叢集的流量,其中目的地 IP + 連接埠位於節點 IP 位址 + NodePort 範圍內。 |
Kubernetes 服務 (類型=ClusterIP) |
命名空間 |
無 |
Kubernetes 服務 (類型=ClusterIP),且啟用了 NodePortLocal 功能 |
命名空間 |
符合進入 Antrea Kubernetes 叢集的流量,其中目的地 IP + 連接埠位於節點 IP 位址 + NodePortLocal 範圍內。 |