Ingress 是 Kubernetes 中使用最廣泛的資源之一。該組件負責基礎設施和應用程序,并有助于將應用程序和服務暴露到集群外。然而,Kubernetes 網絡技術已經有了長足的發展,許多新的用例很快暴露了 Ingress 的局限性。
Ingress API 沒有提供用戶想要定義的高級負載均衡功能,而且用戶管理起來相當不切實際。供應商試圖通過使用 annotations 來解決這些額外的用例以擴展平臺,但這導致供應商之間的實現不一致。
因此,Gateway API 創建了一個新資源和 API 的集合,這些資源和 API 會改進并可能在未來取代 Ingress。
(資料圖片僅供參考)
Gateway API 將 Ingress 功能分為 3 個組件,每個組件負責自己的部分,如下所述。此外,Gateway API 添加了其他有價值的功能。許多 Gateway API 的下游實施者和集成商都提供了公共預覽版,并且正在快速迭代。
除了這個 Envoy 還宣布了他們的 Envoy Gateway 來標準化 Kubernetes Ingress。
舊方法 - Ingress使用安全最佳實踐是通過 Ingress 公開 API,您應該配置了 ingress 的服務,然后再連接到負載均衡器。這意味著 Ingress 包括入口控制器詳細信息(由平臺管理員配置)和應用程序路由(由開發人員配置)。
新方式 - Gateway API1.架構
GatewayClass -> Gateway -> [*]Route
GatewayClass 由平臺/基礎設施提供商提供,例如 Istio 或 Google Cloud。
Gateway 是由平臺/集群管理員定義的 gatewayClass 的一個實例,它將網關綁定到 LoadBalancer。
*Route 用于將路由綁定到網關(可以將多個路由配置到一個網關)。在 TCP/IP 層中可用:
HTTPRoute - 可以路由 HTTP 和 HTTPSTLSRoute - 根據 TLS 層中的參數和 SNI(服務器名稱指示)路由 TLS 和路由TCPRoute - 基于 TCP 目標端口的路由UDPRoute - 基于 UDP 目標端口的路由2.優點
使用新方式的優點:
(1) 網關 API 增加了新功能:
基于 HTTP 標頭的匹配HTTP 標頭操作加權流量拆分流量鏡像面向角色的資源模型(2) Gateway API 還支持擴展:
路由到其他協議任意后端 CRD,例如桶、函數等。自定義參數和配置(LB 算法、自定義匹配)新方法將基礎架構與應用程序解耦展望未來Gateway API 支持更復雜的 LB 功能,例如加權流量拆分和基于 HTTP 標頭的匹配和操作。該功能仍在開發中,許多供應商已開始提供實驗性支持,因此預計網關 API 將穩步向前發展。
原文:https://nonamesecurity.com/blog/the-new-way-to-expose-apis-in-kubernetes-cluster
標簽: Ingress Kubernetes