Ingress Controller 選型指南,第四部分:NGINX Ingress Controller 選項

根據 2020 年雲原生計算基金會(CNCF) 的調查,NGINX 是Kubernetes Ingress Controller 中最常用的數據平面——但您知道嗎? 我們有不止一個"NGINX Ingress Controller"。 本文在 2018 年還有一個版本,標題是《Wait,which NGINX Ingress Controller for Kubernetes Am I Using? (NGINX Kubernetes Ingress Controller 版本辨析)》。 文章的靈感來自與一位社群成員對兩個基於NGINX 的熱門 Ingress Controller 的探討。

Ingress Controller 選型指南,第四部分:NGINX Ingress Controller 選項

摘要:本文是 Kubernetes Ingress Controller 選型指南系列部落格中的第四篇。

1.Ingress Controller 選型指南,第一部分:確定需求(☜已發佈)

2.Ingress Controller 選型指南,第二部分:評估風險和技術前瞻性(☜已發佈)

3.Ingress Controller 選型指南,第三部分:開源、默認和商用版本能力對比(☜已發佈)

4.Ingress Controller 選型指南,第四部分:NGINX Ingress Controller 選項(本文)

根據 2020 年雲原生計算基金會(CNCF) 的調查,NGINX 是Kubernetes Ingress Controller 中最常用的數據平面——但您知道嗎? 我們有不止一個”NGINX Ingress Controller”。

本文在 2018 年還有一個版本,標題是《Wait,which NGINX Ingress Controller for Kubernetes Am I Using? (NGINX Kubernetes Ingress Controller 版本辨析)》。 文章的靈感來自與一位社群成員對兩個基於NGINX 的熱門 Ingress Controller 的探討。



我們不難理解為什麼人們會有困惑(現在仍然如此)。 兩個Ingress Controller 都有以下特點:

  • 名稱是”NGINX Ingress Controller”
  • 開源
  • 託管在 GitHub 上,具有非常相似的代碼庫名稱
  • 均為在大約同一時間啟動的專案的成果

當然,最大的共同點是它們實現了相同的功能。

NGINX 版與 Kubernetes 社群版 Ingress Controller

為了清晰起見,我們這樣區分兩個版本:

  • 社群版——社群版 Ingress Controller 以 NGINX 開源技術為基礎(文檔參見 Kubernetes.io),可在 GitHub 的kubernetes/ingress-nginx 代碼庫中找到。 它由 Kubernetes 社群維護,並且F5 NGINX 承諾説明管理該專案
  • NGINX 版本—— NGINX Ingress Controller 由 F5 NGINX 開發和維護(文檔見docs.nginx.com),可在 GitHub 的 nginxinc/kubernetes-ingress 代碼庫中找到。 它有兩個版本:

▶ 基於NGINX 開源技術(開放的開源版本)

▶基於 NGINX Plus(商用版本)

市面上還有一些其他基於 NGINX 的 Ingress Controller,比如 Kong,不過好在它們的名字很好區分。 如果您不確定使用的是哪個 NGINX Ingress Controller,可以查看正在運行的 Ingress Controller 的容器鏡像,然後將 Docker 鏡像名稱與上面列出的代碼庫進行比較。

NGINXx Ingress Controller 的目標和優先順序

NGINX Ingress Controller 和社群版 Ingress Controller(以及基於 NGINX 開源技術的其他Ingress Controller)之間的主要區別在於它們的開發和部署模式,而這些模式又基於不同的目標和優先順序。

  • 開發理念——所有 NGINX 專案和產品的首要任務都是提供一個具有長期穩定性和一致性的快速、輕量級的工具。 我們努力避免版本之間有任何現有功能上變化,尤其是那些破壞向後相容性的現有功能。 我們保證您在升級時不會有任何意外”驚喜”。 我們也注重可選擇性,因此我們的所有解決方案都可以部署在任何平臺上,包括裸機、容器、虛擬機以及公有雲、私有雲和混合雲。
  • 集成式代碼庫—— NGINX Ingress Controller 使用 100% 純 NGINX 開原始程式碼或 NGINX Plus 實例實施負載均衡,使用僅包含原生 NGINX 功能的最佳實踐配置。 它不依賴於任何未接受NGINX 互操作性測試的第三方模組或 Lua 代碼。 我們的 Ingress Controller 不是利用各種第三方代碼庫拼湊而成,而是由我們自主開發和維護負載均衡器(即 NGINX 和 NGINX Plus)及Ingress Controller 軟體(基於 Go 語言開發)組成。 我們是 NGINX Ingress Controller 所有元件的唯一權威擁有者。
  • 高級流量管理——標準 Kubernetes Ingress 資源的一大局限性在於,您必須使用註釋(annotation)、ConfigMaps 和客戶範本等輔助特性來定製它的高級功能。 NGINX Ingress Resources 採用了一種原生的、類型安全的、縮進式的配置風格,簡化了 Ingress 負載均衡功能的實施,包括 TCP/UDP、斷路、A/B 測試、藍綠部署、HTTP請求頭修改、雙向 TLS 認證(mTLS)和 Web 應用防火牆 (WAF)。
  • 持續生產就緒性——每個版本都按照合理的生產標準構建和維護。 無論您使用的是基於 NGINX 開源版還是基於 NGINX Plus 的版本,您都可以從這種”企業級”特性中受益。 NGINX 開源版的使用者可以在 GitHub 上諮詢我們的工程團隊,NGINX Plus 訂閱使用者則可以獲得一流的售後技術支援。 無論哪種方式,NGINX 開發人員都將為您效勞!

NGINX 開源版與 NGINX Plus —— 為什麼要升級到我們的商用版?

既然說到這了,我們就來回顧一下基於 NGINX Plus 的 NGINX Ingress Controller 的一些主要優勢吧。 我們在《Kubernetes Ingress Controller 選型指南,第三部分:開源、預設和商用版本能力對比》中說過,開源和商用版本的 Ingress Controller 之間存在實質性差異。 如果您計劃在生產環境Kubernetes 中部署大規模且複雜的應用,那麼我們的商用 Ingress Controller 可以説明您在某些關鍵領域節省時間和金錢。

►安全性與合規性

許多企業和機構未能在生產中交付 Kubernetes 應用的一大原因是難以保障它們的安全性和合規性。 基於 NGINX Plus 的 NGINX Ingress Controller 可以從如下五個至關重要的方面保證您的應用和客戶安全。

  • 保護邊緣——在架構合理的 Kubernetes 部署中,對於數據平面流量來說,Ingress Controller 是其流向在 Kubernetes 中運行的服務的唯一入口點。 因而 Ingress Controller 是部署 Web 應用防火牆 (WAF) 的理想位置。 NGINX App Protect 集成 NGINX Ingress Controller,可保護您的 Kubernetes 應用免受 OWASP 十大風險和許多其他漏洞的侵害,確保 PCI DSS 合規性,性能完勝 ModSecurity。
  • 集中管理身份驗證和授權——您可以使用 OpenID Connect(OIDC,構建在 OAuth 2.0 框架之上)和 JSON Web Token (JWT) 身份驗證在入網站實施身份驗證和單點登錄 (SSO)。
  • 實施端到端加密——如果需要保護服務之間的流量,您可以選擇使用服務網格。 NGINX Service Mesh(始終免費)可以無縫集成 NGINX Ingress Controller,讓您以低於其他網格的最小延遲,有效控制入站和出站的 mTLS 流量。
  • 獲取及時主動的補丁通知——一旦曝出 CVE 漏洞,訂閱使用者就會收到預警資訊,並快速獲得補丁。 這可以第一時間降低被駭客利用的風險,使用者不必再焦急地期盼 GitHub 上的更新,也不必再為了補丁發佈而苦等數周甚至數月。
  • 遵循FIPS ——您可以啟用 FIPS 模式,確保與 NGINX Plus 通信的用戶端使用可信的強密碼。

►應用性能和彈性

正常運行時間和應用速度通常是開發人員和平台運營團隊的關鍵性能指標 (KPI)。 基於 NGINXPlus 的 NGINX Ingress Controller 可以從五個至關重要的方面保證您的應用的正常運行時間和速度,説明您實現 Kubernetes 的承諾。

  • 實時監控—— NGINX Plus 儀錶板可顯示數百個關鍵負載和性能指標,説明您快速找到應用運行緩慢(或宕機 ! )的原因。
  • 更快地檢測和解除故障——實施主動檢查運行狀況的斷路器,主動監控 TCP 和 UDP 上游伺服器的運行狀況。
  • 無需重啟即可重新配置——相比較開源替代方案,NGINX PLUS提供更快速、無中斷重新配置,保證您的應用交付具有穩定的性能和資源使用率,以及更低的延遲。
  • 全面測試新功能和部署——利用鍵值存儲更改百分比,避免了重新載入,有效簡化了 A/B 測試和藍綠部署的執行。
  • 快速提供支援——對於那些等不及社群回答問題或不想承擔敏感數據暴露風險的企業和機構來說,保密的商業支援很重要。 NGINX 提供了多個層級的支持,涵蓋安裝、部署、調試和糾錯等服務,能夠滿足您多方面的需求。 哪怕只是對某些地方有疑問,您也可以找我們獲得説明。