Gateway API 當前支持多種路由類型(處于不同成熟度級別),并在此基礎上添加了全新的路由功能,旨在為用戶提供更靈活的網絡配置能力。
在 HTTPRoute 中,Headers 字段支持 HTTP 請求標頭匹配。多個匹配值被視為邏輯 AND,即請求必須匹配所有指定的標頭條件,才能選擇對應的路由。
通過 HTTPRoute 的 Method 字段,用戶可以指定需要匹配的 HTTP 動詞。只有當請求的 HTTP 方法與指定值一致時,路由才會生效。
QueryParams 字段允許用戶指定請求中必須包含的查詢參數。多個查詢參數的匹配條件同樣為邏輯 AND,即請求需滿足所有指定參數條件,才能匹配到路由。
HTTPRoute 的 backendRef 支持設置后端權重,用于控制請求分發比例。權重計算公式為:
權重 / (此后端參考列表中所有權重的總和)
例如,若服務 A 的權重為 200,服務 B 的權重為 100,則約 2/3 的請求會被分發到服務 A。
HTTPRoute 篩選器提供了對路由行為的進一步控制,例如修改請求標頭或啟用請求鏡像。用戶還可通過 ExtensionRef 字段附加自定義篩選器,例如將 Kong 插件集成到路由中。
與傳統的 Ingress API 不同,Gateway API 支持跨命名空間引用對象。這種功能主要應用于以下場景:
跨命名空間的服務引用
命名空間 A 中的“網關”和“路由”可以引用命名空間 B 中的服務。默認情況下,這種引用是被阻止的,但可以通過 ReferenceGrant API 啟用。
跨命名空間的網關配置
命名空間 B 中的“路由”可以配置命名空間 C 中的“網關”。此功能默認也被阻止,但可以通過 AllowedRoutes 字段啟用。
Ingress2gateway 是一個專注于將 Ingress 和特定提供商資源(CRD)轉換為 Gateway API 資源的項目。它基于提供者的實現方式,允許任何 Gateway API 實現貢獻自己的提供者,將與 Ingress 相關的注釋和 CRD 轉換為 Gateway API 資源。
Kong 已實現了自己的提供者,并支持以下功能的遷移:
Gateway API 提供了一種標準化方式來為 API 添加功能。通過其靈活的架構設計,用戶可以更高效地管理和擴展 Kubernetes 網絡資源。
Gateway API 是 Kubernetes 歷史上最具協作性的 API 之一,由多個供應商和社區成員共同推動,確保其成為一個長期適用的標準。隨著 Gateway API 的正式發布,它已經可以在生產環境中使用,為用戶提供了更強大的網絡管理能力。
原文鏈接: https://konghq.com/blog/engineering/kubernetes-gateway-api-engineering-perspective