Ingress Controller 選型指南,第三部分:開源、預設和商用版本能力對比

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

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

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

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

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

4.Ingress Controller 選型指南,第四部分:NGINX Ingress Controller 選項(即將發布)



恭喜您!讀完本系列部落格的第一部分和第二部分後,您差不多就可以開始選擇 Ingress Controller 了。 我們來回顧一下往期的內容:

第一部分討論了如何確定您在性能、預算、用例、架構和擁有權方面的需求。

第二部分討論了 Ingress Controller 選擇不當可能會引發的風險,並概述了您可以前瞻性地選擇的幾個關鍵領域。

Ingress Controller 分為三類:開源、預設和商用。它們各有各的用例,您需要在選擇之前先明確自己的短期和長期需求。本文將會介紹每個類別的優缺點。


開源 Ingress Controller

雖然有些開源 Ingress Controller 有專門的工程團隊,但多數都是由社群的使用者和志願者開發人員來維護。目前最流行的兩個開源 Ingress Controller 都是基於 NGINX 構建的,其中一個是由Kubernetes 社群維護的、另外一個是由核心 NGINX 工程團隊主導並開源的。有關基於 NGINX 的Ingress Controller 的進一步比較,請參閱本系列部落格第 4 部分。

優點

  • 免費使用,社群驅動——許多企業和機構選擇開源項目不僅是因為其無與倫比的價格(免費!),而且還在於他們更喜歡社群開發的技術。
  • 功能反覆運算快——這類 Ingress Controller 更有可能走在功能創新的最前沿。

缺點(開源專案普遍存在的問題)

  • 成本(時間)——它們缺乏易於設置和擴展的”開箱即用”工具,所以您最終會花時間在定製化和解決方法上,以滿足您的特定需求。
  • 風險——可能缺乏穩定性、安全性和可靠性(原因在於重視功能發佈速度和貢獻者的志願性質)。CVE(通用漏洞披露)漏洞的補丁可能永遠不會出現,或者可能在 CVE 公開披露數月後才出現,這會給駭客攻擊您的Ingress Controller創造很長的時間視窗。
  • 很少或者沒有支援服務——出現問題時多數需要自己解決,最多查查文檔資料。如果遇到自己無法解決的問題,則很難甚至根本無法獲得説明——留給您唯一的選擇就是在社群論壇上曬出自己的問題,寄望於社群的其他成員能夠費心回應並且知道某種解決辦法。

總結

由於有文檔、上手快且免費,首次試水 Kubernetes 的企業和機構通常會選擇開源 Ingress Controller。 這在起步階段、測試環境或小批量生產環境中是一種不錯的選擇。

預設的 Ingress Controller

雖然許多預設的 Ingress Controller 也基於開源技術構建,但它們由提供完整Kubernetes 平臺(並且通常提供管理支援)的公司開發和維護,因此我們單獨拿出來介紹。公有雲 Ingress Controller、Rancher 和紅帽OpenShift 路由器都屬於這一類。

►優點

  • 免費或低成本——低廉的價格是這類產品非常有吸引力的一個宣傳點。 它們已經集成到平臺中,對新手來說是當之無愧的省時神器。
  • 可靠且有支援——它們由專門的工程團隊來維護,比社群維護的 Ingress Controller 更可靠一些。它們通常自帶或額外銷售商業支援。

缺點

  • 基礎架構鎖定——預設的 Ingress Controller 受基礎架構的限制,您無法在雲平台之間遷移它們或它們的配置。 這意味著每個部署環境都需要不同的 Ingress Controller,這將會導致工具蔓延,增加團隊的學習難度,並使 Ingress Controller 更加難以保護。
  • 基本功能——它們通常缺乏大規模部署所需的高級流量管理和安全功能。
  • 不可預測的成本(時間和金錢)——雖然初始成本為零或很低,但其成本可能會隨著應用的成長而急劇攀升且不可預測。 您可能需要花費時間將Ingress Controller最小功能集中缺少的功能構建到您的應用程式中,更別說每次更新都伴隨著回歸測試。 有些預設工具還有一個缺點:隨著應用變得越來越流行,起初看似不起眼的輸送量費用將會讓您的雲帳單大幅增加。

總結

對於剛接觸 Kubernetes 並使用託管平臺(例如亞馬遜 Elastic Kubernetes Service(EKS)、Google Kubernetes Engine (GKE)、微軟 Azure Kubernetes Service (AKS)、Rancher、紅帽OpenShift Container Platform)的團隊來說,預設的 Ingress Controller 是一種比較受歡迎的選擇。隨著應用的成熟和團隊的壯大,組織通常會將企業級Ingress Controller添加到其堆疊中,而不是替換預設工具。

商用 Ingress Controller

商用 Ingress Controller 是指在支援大型生產部署的許可商品。基於 NGINX Plus 的 F5 NGINX Ingress Controller 就是一個典型的例子,我們將在第 4 部分詳細討論。

優點

  • 功能豐富——商用 Ingress Controller 包含豐富、強大的功能,能夠為大型部署環境提供高級流量管理和可擴充性。它們可能還會整合其他生產級產品,例如 WAF 或服務Service mesh。
  • 可擴展性——企業和機構發現這類產品可以節省時間,因為它們往往有更多「開箱即用」的功能,不需要自定義和變通。 它們可以輕鬆添加到自動化流水線中,以支撐基礎架構按需擴展。
  • 可靠且有支援服務——商用產品的主要優勢之一是良好的穩定性,這意味著每個版本發佈都經過了廣泛的測試,並定期進行軟體更新並安全補丁發佈。商用產品一般會提供各個級別的全面商業支援,如果您遇到嚴重問題,通常幾分鐘或幾小時內就能獲得保密説明。

缺點

  • 開發略慢——由於穩定性是商用 Ingress Controller 的重要考慮因素,它們的功能發佈速度可能比開源競品稍微慢一些。
  • 成本(金錢)——商用產品有一個不得不面對的現實:收費。 如果企業和機構開發週期長,現金迴流慢,那麼除非這種情況得以改變,否則成本對他們而言就是交易路上的絆腳石。

總結

隨著企業和機構的擴展,根據團隊和應用的複雜性來選擇Ingress Controller變得愈發重要。一但組織上呈現高度複雜性,商用Ingress Controller就變得有意義,因為它可以降低管理複雜性並加快新產品功能的上市速度。

下一步行動:評估您的選擇

到了這個階段,您就可以劃掉一些不符合需求的選項,只鎖定一部分 Ingress Controller 了。

在研究Ingress Controlle的過程中,您可能會注意到許多選擇都是基於NGINX的。有關基於NGINX的Ingress Controller選擇的概述,請閱讀本系列最後一篇部落格:”Ingress Controller 選型指南,第四部分:NGINX Ingress Controller 選項”(即將發佈)。




作者:Jenn Gile

職位:NGINX 產品營銷經理