測試環境 OpenShift 4.8 / F5 CIS 2.7.1 / NGINX IC 2.1.0


Introduce

F5 作為 PaaS 中的入口控制器,目前的商業解決方案可分為兩類

  1. Hardware / VM
    F5 最經典的 BIG-IP 系列產品,搭配 F5 Container Ingress Services (CIS) 整合,擁有 BIG-IP 原生強大的 L4 / L7 負載均衡、可程式化流量控制、智慧型 DNS 回應、網頁防火牆及 DDOS / Bot 防禦等。支援使用 ConfigMap 操作 F5 AS3 相關設定。
  2. 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 的整合。

下一篇我們將進行實際的操作部署流程


References