采用Kubernetes時API網關面臨的兩個很重要的挑戰
KUBERNETES和邊緣計算,擴展邊緣管理并支持多種需求
使用微服務模式構建應用程序并將這些服務部署到Kubernetes上已成為當今運行云原生應用程序的實際方法。 在微服務架構中,單個應用程序被分解為多個微服務。 每個微服務均由一個小團隊擁有,該團隊有權并負責為特定的微服務做出正確的決策。
這種職責通常從用戶請求到達的系統邊緣開始,一直到服務的業務邏輯,再到相關的消息傳遞和數據存儲架構。
Edge和Kubernetes入口
最終用戶需要訪問微服務。 內部微服務和最終用戶之間的邊界稱為邊緣。 為了使最終用戶訪問內部應用程序,流量需要越過邊緣。 在Kubernetes中,流量使用一種稱為入口的軟件穿越邊緣。
將API網關與在Kubernetes上運行的基于微服務的應用程序集成時,您必須考慮兩個主要挑戰:
- 如何擴展對100多種服務和相關API的管理; 和
- 網關如何支持通常跨整個邊緣堆棧的廣泛的微服務體系結構,協議和配置。
API網關:微服務的聯絡點
API網關是如何管理,保護和呈現API的核心。 它作為軟件組件(或一系列組件)部署在虛擬機上或Kubernetes中,并充當系統的單個入口點。 API網關的主要職責是使用戶能夠可靠,安全地訪問多個API,微服務和后端系統。
微服務和Kubernetes提供了實現靈活性。 例如,一個團隊可以選擇在系統的邊緣(內部服務和最終用戶之間的邊界)公開基于容器的微服務,作為一組基于HTTP的REST API。 另一個團隊可能會選擇Protobufs和gRPC。 有實時流需求的團隊可以通過WebSocket API公開其微服務。 Kubernetes中部署的任何API網關都必須支持所有這些協議。

每個團隊不僅可以自由做出這些選擇,而且對后果負責。 這通常轉化為"您構建,運行"。 盡管并非每個組織都完全贊同這種工作方式,但是每個微服務團隊都需要能夠理解,診斷和配置處理每個服務以及每個用戶對應用程序的請求的各個方面。 與應用程序和API相關的運行時要求的多樣性意味著,每個團隊都將使用邊緣堆棧中的所有層,例如,動態請求處理,WAF和任何緩存實現。
微服務的開發范例(獨立,授權和負責的團隊)為使用API網關,Kubernetes入口和邊緣的微服務團隊帶來了一系列新挑戰。
在本文中,我們確定了邊緣的兩個重要挑戰:管理獨立的微服務以及訪問全面的邊緣堆棧。
挑戰1:擴展邊緣管理
隨著部署的微服務數量的增加,管理邊緣的挑戰也越來越多
在微服務架構中,工程師將管理更多的服務和應用程序。 每個團隊都需要能夠獨立管理他們的服務,以使發布與其他團隊的計劃脫鉤。 在邊緣公開應用程序的傳統方法通常是通過集中的操作或平臺團隊來完成的。 但是,當組織擁有數百個微服務時,一個運維團隊無法擴展以處理必要的變更量。
需要在邊緣修改配置的典型更改:
- 正在部署的服務的新版本。
- 修改端點,路由指令或關聯的后端服務。
- 身份驗證和授權服務的更改。
- 修改非功能性需求,例如速率限制,超時,重試模式和斷路。
- 用戶對新功能的測試,例如,為一小部分Beta測試用戶啟用功能。
采用基于微服務的體系結構將導致發行數量顯著增加。 這種增加只會加劇邊緣管理方面的挑戰,并增加集中式操作方法的壓力。
挑戰2:支持各種范圍的邊緣要求
微服務在邊緣引入了許多新問題
微服務架構實現了架構靈活性。 應用程序開發人員利用這種靈活性來選擇最適合服務特定要求的編程語言和體系結構。 無論架構如何,邊緣都需要支持需要向用戶公開的廣泛功能。 這擴展了API網關的傳統角色,并且與邊緣整合工具需求相關的一些挑戰包括:
- 熟練地路由各種協議的能力。 常見協議包括HTTP / 1.1,HTTP / 2,WebSocket,gRPC,gRPC-Web和TCP。
- 提供任何特定服務所需的完整邊緣功能集合,范圍從流量管理到可觀察性再到身份驗證等等。
- 為應用程序開發人員在自助服務模型中公開這些功能。
鼓勵微服務團隊實施的多樣性使工程師可以選擇"適合工作的工具"。 但是,基礎平臺的整合提供了許多好處。 與其允許開發人員構建定制的實現以提供額外的協議支持或安全處理,不如讓其在邊緣具有預先批準的"自助"選項,從而使他們可以選擇最合適的選項,從而更加易于管理和擴展。 功能組合。
摘要
隨著組織采用Kubernetes并轉向基于微服務的體系結構,最終用戶與內部微服務之間的邊界出現了一系列新的挑戰。 因此,系統的"邊緣"以及相關技術(例如API網關)是采用微服務時的重點。 微服務的組織模型驅動著邊緣的這些新挑戰,在這種模型中,獨立團隊有權并負責為微服務制定正確的體系結構和實施決策。
管理系統邊緣一直很復雜。 添加具有多種體系結構的更多服務只會增加對邊緣的需求。 平臺團隊必須相應地設計,選擇和實現其API網關和邊緣工具。