導讀:以Kubernetes的Kong爲例,聊聊當前流行的開源且與雲無關的Ingress控制器。後端
您能夠經過使用諸如Kong for Kubernetes的Ingress控制器(使用自定義資源定義並提供許多插件)來極大地擴展Ingress資源的功能。安全
Kubernetes正在整個技術行業中獲得採用,而且正逐漸成爲現代雲服務交付的實際編排平臺。Kubernetes不只提供了用於在雲中部署微服務的原語,並且更進一步,幫助開發人員定義交互並管理其API的生命週期。微服務
Kubernetes中的Ingress API容許您將微服務公開給外部世界,併爲南北流量(即進入虛擬數據中心的流量)定義路由策略。使用Ingress 使用持續集成和持續交付(CI / CD)管道來管理API生命週期的好處不少,可是在咱們介紹這些以前,讓咱們從一些基礎知識開始。工具
Ingress資源的設計和目的學習
Kubernetes集羣的最簡單描述是在容器中運行應用程序的一組受管節點。在大多數狀況下,Kubernetes集羣中的節點不會直接暴露於公共互聯網。這是有道理的,由於將全部服務公開在一個節點上會帶來難以想象的風險。爲了向公衆提供對選定服務的訪問,Kubernetes提供了Ingress資源。測試
Ingress資源公開了從羣集外部到其中的選定服務的HTTP和HTTPS路由。Ingress資源還提供控制流量的規則。這使得Ingress資源成爲處理大量獨立服務提供的各類API的理想解決方案。爲此,它爲全部客戶端提供一個入口點,而後處理對後端服務的請求。這一般稱爲扇出配置。spa
還能夠爲基於名稱的虛擬主機設置Ingress資源,該資源將基於主機頭路由請求:插件
爲了使Ingress資源正常工做,須要在Kubernetes集羣上安裝Ingress控制器。控制器在Kubernetes集羣和現有的各類面向公衆的接口之間創建了橋樑。例如,大多數託管Kubernetes的雲提供商都提供了一個獨特的Ingress控制器,以與他們規定的面向公衆的方法對接。各個控制器的操做彼此不一樣,而且能夠提供不一樣數量的附加功能。設計
使用Ingress經過CI / CD管道管理API生命週期的好處3d
Ingress資源是經過聲明性配置文件定義的,該文件一般在YAML中進行描述。這與全部Kubernetes資源一致,並容許直接集成到現代部署模式中,例如CI / CD的組合實踐。這就是快速,頻繁且安全地部署Ingress更改的能力。這樣,能夠將Ingress資源與應用程序自己合併到相同類型的軟件開發生命週期模式中。
開發人員如何使用Kong for Kubernetes完成Ingress
面向Kubernetes的Kong是一個流行的開源且與雲無關的Ingress控制器。Kong for Kubernetes入口控制器是做爲Kubernetes中的自定義資源定義(CRD)構建的。這爲那些已經習慣在該平臺內定義資源的人提供了Kubernetes原生體驗。
像您的應用程序和服務同樣,能夠經過Manifest,Helm或Kustomize安裝Kong for Kubernetes。
Kong for Kubernetes Ingress Controller經過提供普遍的插件集來擴展Ingress資源的功能,這些插件涵蓋了包括身份驗證,分析,監視以及請求和響應轉換在內的各類功能,僅舉幾例。經過在Ingress控制器上提供這些常見(有時不是很常見)的要求,Kong for Kubernetes可以使開發人員將更多精力放在服務的核心要求上。當組織從少數的單一應用程序遷移到數百個(甚至數千個)微服務時,其價值變得尤其明顯。
有關常見插件的列表,請訪問 https://docs.konghq.com/hub/。
Kong插件被定義爲Kubernetes資源,其中的config部分提供了各個插件的設置。如下是一個限速插件示例,該插件將流量限制爲每分鐘五個請求:
經過在資源的元數據部分中的簡單註釋便可將Kong插件添加到Kubernetes資源中。這容許將插件應用於不一樣的層。例如,您能夠將一個插件應用於整個Ingress資源,或者以一種更細粒度的方式將其應用於單個服務資源。
這是將上述插件應用於Ingress資源的示例:
Kong for Kubernetes還能夠集成到Kong Enterprise產品的完整套件中,包括Kong Studio,Kong Dev Portal,Kong Manager, Kong Brain和Kong Immunity。這樣就可使用更高級的Kong插件以及完整的API生命週期解決方案。這套產品涵蓋API規範的創做和發佈,以及Kong資源的管理,甚至流量分析。
您能夠採用「規範優先」的方法來使用Kong Studio開發API。在該庫中,您將找到用於在標準OpenAPI規範中編寫文檔的工具以及用於當即反饋的測試工具。Kong Studio還提供了使用GraphQL的工具。Kong Studio直接同步到Git,這能夠將您的規格文件集成到CI / CD工做流程中,從而能夠自動更新Kong Dev Portal。
Kong Dev Portal託管您的API文檔(能夠是私人的也能夠是公共的)。它具備極高的可定製性,可以讓您使其適應組織的風格和品牌。擁有完善文檔的API對於提升生產力很重要,而且在Kong Studio和Dev Portal之間進行良好管理的流程能夠幫助確保文檔儘量保持最新。
Kong Manager提供了圖形界面來觀察和管理整個Kong產品套件。從這裏,您能夠觀察路由,服務和插件之間的關係。您能夠實時瞭解流量並跟蹤消費者。
Kong Brain會分析經過Ingress的流量,並建立服務間依賴關係的可視服務圖。它還具備根據生成的地圖自動生成OpenAPI規範文檔的功能。這是一項有價值的功能,由於即便出於最佳意圖,也可能沒法正確記錄所部署的服務。
Kong Immunity會分析經過Ingress的全部流量,並學習識別異常的模式。這些一般是微妙的請求,它們並不引人注目,但可能會引發人們的興趣,例如不斷嘗試經過的未知參數。這也是一個很是有價值的功能,由於將這些針刺入成千上萬個日誌條目的大海撈針並不容易。
充分利用Ingress
Kubernetes入口資源提供了從外部Kubernetes到內部後端服務的單個入口點。經過利用聲明性定義文件,能夠像對待全部其餘形式的代碼同樣對待Ingress資源,並將其集成到常見的軟件開發生命週期中。
爲了橋接Kubernetes以外的通訊,須要一個Ingress控制器。Kong for Kubernetes是一個Ingress控制器,它使用自定義資源定義經過提供大量插件來極大地擴展Ingress資源的功能,從而使開發人員能夠專一於核心業務價值。Kong擁有一套企業工具,能夠在整個API生命週期內極大地提升生產力和安全性。