虛擬雲網路

網路虛擬化NSX 技術文章系列三百二十二: 使用 NSX 防火牆提供 Kubernetes 叢集南北向防護(二)

作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。

接續前篇網誌內我們介紹了對應Kubernetes環境網路安全保護機制,南北向防護的必要性。而當企業原本就是VMware NSX的用戶時,採用NSX本身的防火牆機制(包含閘道式防火牆或東西向防火牆)來提供Kubernetes Cluster的進出網路流保護當然是水到渠成,且與其他競爭友商方案相比有更多優勢的。本篇網誌我想先和大家說明一下方案的架構,並後續逐步介紹與展示相關功能內容。

以NSX防火牆來提供Kubernetes Cluster南北向防護機制的方案架構可整理如下:

  • 藉由NSX整合Kubernetes Cluster內的VMware Container Networking with Antrea,NSX可以取得此Kubernetes叢集的不同出、入口機制資訊,比如說Ingress / Load Balancer / Node IP等等。
  • NSX管理者可以配置標準的NSX群組 (Group) ,指定特定的Kubernetes Cluster / 特定的Namespace內的上述出、入口機制資訊。比如說,管理者可以配置一個群組,裡面設定動態條件為在Production-Cluster內的web-ns Namespace,名稱叫做portal-ingress的ingress物件。此時,此群組就可以直接抓出對應到這個ingress物件的IP位置
  • 然後NSX管理者就可以在閘道式 (Gateway Firewall) 或分散式 (Distributed Firewall) 防火牆內,把上述的群組放到防火牆規則的來源或目的端(Ingress當然應該是在目的端),啟用網路防護機制了

直接舉一個很簡單的例子與大家討論:

NSX 整合 VMware Container Networking with Antrea

我們這裡講的NSX整合Antrea,與前面網誌285~288這四篇討論的流程一模一樣。唯一的差別是因為這是新功能,所以

  • NSX Manager必須要安裝4.1以上版本
  • Antrea必須採用社群版本v1.9.0之後版本,或是對應VMware Container Networking with Antrea的商用版本1.6之後
  • Antrea整合NSX的相關Manifest檔案與Image(網誌288內提到的interworking.yaml, bootstrap-config.yaml, deregisterjob.yaml 這些),也需要為配合VMware Container Networking with Antrea 1.6的對應版本

其他流程與配置方法都完全相同。下圖是我將一個名稱叫vanilla-124-cluster的K8S叢集整合到NSX 4.1後,在NSX Manager內看到的畫面,可看到這裡安裝的Antrea版本是v1.9.0 (對應VMware Container Networking with Antrea的商用版本1.6)。

NSX 內配置需求 Kubernetes物件群組

接著我們在NSX 4.1 Manager的UI介面內,就可以到群組 (Inventory – Groups) 內建立一個標準的動態群組。下圖內我們可以看到,在標準Generic群組內,以前我們在設置條件 (Criterion) 時,選擇的可能是虛機、網段等並配置對應的條件。現在在整合了Antrea後,可以直接在條件內配置Kubernetes或是Antrea的物件,如下圖所示:

比如說我們做一個最簡單的群組:要包含vanilla-124-cluster這個Kubernetes叢集內,所有的K8S Node IP。下圖就是在此群組內設定的條件

  • 選擇名稱以vanilla開頭的K8S Cluster
  • 在上述Cluster內,顯示所有的Kubernetes Node IP地址

配置完後,我們可以檢查有哪些成員符合上述條件在此群組內,可以看到各個Kubernetes Node以及對應的IP地址都有顯示出來:

與我們用Command Line抓到這些Kubernetes Node的資訊完全一致:

NSX 閘道或分散式防火牆內配置安全防護規則

群組配置完也可以選擇到對應的物件後,我們就可以在防火牆規則內進行需要的配置了。在下圖內我們配置了NSX的分散式防火牆規則,設定由特定的機器(Colin-Mgmt-VM群組)連線到在前面步驟配置的vanilla-k8s-nodeport這個Group,允許所有ICMPv4的網路測試封包

接著我們就從來源端這台用戶機器開始ping其中一台K8S Node (vanilla-k8s-node-01, 172.16.18.21),然後異動這條防火牆規則,由允許改成Reject,再改回Allow。可以由下面的紀錄看到防火牆功能有生效。

在本篇網誌內,我們很簡單地用一個例子讓大家看到,如何利用NSX標準防火牆來提供Kubernetes叢集的南北向防護。重點在於NSX 4.1與VMware Container Networking with Antrea的結合,能夠非常簡單地讓管理者於群組內配置各個K8S Cluster的出入口對應物件資訊,然後即可運用於NSX防火牆規則內。本篇的舉例非常簡單,在下一篇,我們會更進一步就此功能可以抓取的細部Kubernetes物件資訊,以及對應能解決的容器安全場景,做詳細的說明。