F5 BIG-IP CIS 與 NGINX IC 強化 OpenShift 入口控制能力 (Part.1)
測試環境 OpenShift 4.8 / F5 CIS 2.7.1 / NGINX IC 2.1.0
Introduce
F5 作為 PaaS 中的入口控制器,目前的商業解決方案可分為兩類
- Hardware / VM
F5 最經典的 BIG-IP 系列產品,搭配 F5 Container Ingress Services (CIS) 整合,擁有 BIG-IP 原生強大的 L4 / L7 負載均衡、可程式化流量控制、智慧型 DNS 回應、網頁防火牆及 DDOS / Bot 防禦等。支援使用 ConfigMap 操作 F5 AS3 相關設定。 - Container
F5 於 2019 年收購的 NGINX,並將 F5 的應用安全能力 (BIG-IP WAF/DDoS) 整合至 NGINX PLUS,提供更高效及完整的應用安全防護能力。此外 NGINX PLUS 有著更輕量的部署方式和友善開發人員操作方式,支援 L7 / L4 負載均衡、 JWT 驗證、網頁防火牆及 DDOS 防禦等。
兩個方案中有部分的功能重疊,但以部署位置和角色權責區分,BIG-IP CIS 為硬體或軟體 (VM) 部署於集群外部,面向網路或資安維運人員,控管範圍及粒度較大,而 Nginx KIC 為軟體 (Container) 部署於集群內部,面向開發人員,控制的範圍及粒度較小 (Per APP)。
CNI selection
BIG-IP CIS 支援的 CNI 類型通常可區分為路由型和隧道型兩種,OpenShift 預設 CNI 是隧道型的 OVN-Kubernetes (VXLAN / Geneve),需要使用 Hybrid Overlay 模式與 CIS 搭配使用。在啟用該模式後,從 F5 BIG-IP 到 OpenShift Cluster 的南北向流量會使用 VXLAN 進行封包傳遞,而 OpenShift Cluster 內部節點之間的東西向流量則會使用 Geneve 隧道。
另外,相較於與 CIS 搭配使用 VXLAN 的 Flannel 靜態塞 ARP 的作法,F5 BIG-IP VXLAN 使用 Multipoint 的洪泛方式,透過 CIS 獲取 OpenShift Node vTEP MAC 地址來更新 VXLAN FDB 清單,具有較大的差異。
在設定 OpenShift Cluster Network 中還需要特別注意,除了調整 CNI 為 OVN-Kubernetes,還需要正確的啟用 Hybrid Overlay 模式的設定,否則就無法獲取 External Gateway 的資訊來進行正常通訊。
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
annotations:
networkoperator.openshift.io/ovn-cluster-initiator: 10.192.125.160
creationTimestamp: "2022-02-21T09:11:20Z"
generation: 2
name: cluster
resourceVersion: "6432"
uid: 5c813de9-f61d-4f2e-a193-5181d97a3b7f
spec:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
defaultNetwork:
ovnKubernetesConfig:
genevePort: 6081
hybridOverlayConfig: {} ### Enable hybrid overlay cluster
mtu: 1400
policyAuditConfig:
destination: "null"
maxFileSize: 50
rateLimit: 20
syslogFacility: local0
type: OVNKubernetes ### Setting CNI mode to OVNKubernetes
deployKubeProxy: false
disableMultiNetwork: false
disableNetworkDiagnostics: false
logLevel: Normal
managementState: Managed
observedConfig: null
operatorLogLevel: Normal
serviceNetwork:
- 172.30.0.0/16
unsupportedConfigOverrides: null
useMultiNetworkPolicy: false
Architecture
第一層的負載均衡由 F5 BIG-IP 基於主機名稱負載到 Nginx KIC Pod,第二層的負載均衡由 Nginx KIC 基於路徑負載到應用服務 Pod。F5 BIG-IP 透過 CIS 自動服務發現來動態擷取 Nginx KIC Pod 的 IP 地址,搭配 CRD 來完成自動取得服務虛擬 IP 地址 (F5 IPAM) 並發布服務、自動 DNS 註冊更新、相關安全策略的套用等。
Demo
F5 CIS 支援 OpenShift 原生 Route 資源來發布應用,但支援的功能較少且靈活性低,故此次示範使用 CRD 部屬。
Conclusion
相較於 PaaS 原生搭載的入口控制解決方案,F5 可提供功能豐富強大的入口流量管理及相關安全策略配套,同時支援多種應用部署方式及宣告式設定,可以大幅提升 DevOps CI/CD 整合的可行性、方便性及敏捷性。此外,F5 具備出色的 CNI 的適配性,可有效實現各 PaaS 支援的 CNI 的整合。
下一篇我們將進行實際的操作部署流程