Ingress 是 Kubernetes 中使用最廣泛的資源之一。該組件負(fù)責(zé)基礎(chǔ)設(shè)施和應(yīng)用程序,并有助于將應(yīng)用程序和服務(wù)暴露到集群外。然而,Kubernetes 網(wǎng)絡(luò)技術(shù)已經(jīng)有了長足的發(fā)展,許多新的用例很快暴露了 Ingress 的局限性。

Ingress API 沒有提供用戶想要定義的高級負(fù)載均衡功能,而且用戶管理起來相當(dāng)不切實(shí)際。供應(yīng)商試圖通過使用 annotations 來解決這些額外的用例以擴(kuò)展平臺,但這導(dǎo)致供應(yīng)商之間的實(shí)現(xiàn)不一致。

因此,Gateway API 創(chuàng)建了一個新資源和 API 的集合,這些資源和 API 會改進(jìn)并可能在未來取代 Ingress。


(資料圖片僅供參考)

Gateway API 將 Ingress 功能分為 3 個組件,每個組件負(fù)責(zé)自己的部分,如下所述。此外,Gateway API 添加了其他有價值的功能。許多 Gateway API 的下游實(shí)施者和集成商都提供了公共預(yù)覽版,并且正在快速迭代。

除了這個 Envoy 還宣布了他們的 Envoy Gateway 來標(biāo)準(zhǔn)化 Kubernetes Ingress。

舊方法 - Ingress

使用安全最佳實(shí)踐是通過 Ingress 公開 API,您應(yīng)該配置了 ingress 的服務(wù),然后再連接到負(fù)載均衡器。這意味著 Ingress 包括入口控制器詳細(xì)信息(由平臺管理員配置)和應(yīng)用程序路由(由開發(fā)人員配置)。

新方式 - Gateway API

1.架構(gòu)

GatewayClass -> Gateway -> [*]Route

GatewayClass 由平臺/基礎(chǔ)設(shè)施提供商提供,例如 Istio 或 Google Cloud。

Gateway 是由平臺/集群管理員定義的 gatewayClass 的一個實(shí)例,它將網(wǎng)關(guān)綁定到 LoadBalancer。

*Route 用于將路由綁定到網(wǎng)關(guān)(可以將多個路由配置到一個網(wǎng)關(guān))。在 TCP/IP 層中可用:

HTTPRoute - 可以路由 HTTP 和 HTTPSTLSRoute - 根據(jù) TLS 層中的參數(shù)和 SNI(服務(wù)器名稱指示)路由 TLS 和路由TCPRoute - 基于 TCP 目標(biāo)端口的路由UDPRoute - 基于 UDP 目標(biāo)端口的路由

2.優(yōu)點(diǎn)

使用新方式的優(yōu)點(diǎn):

(1) 網(wǎng)關(guān) API 增加了新功能:

基于 HTTP 標(biāo)頭的匹配HTTP 標(biāo)頭操作加權(quán)流量拆分流量鏡像面向角色的資源模型

(2) Gateway API 還支持?jǐn)U展:

路由到其他協(xié)議任意后端 CRD,例如桶、函數(shù)等。自定義參數(shù)和配置(LB 算法、自定義匹配)新方法將基礎(chǔ)架構(gòu)與應(yīng)用程序解耦展望未來

Gateway API 支持更復(fù)雜的 LB 功能,例如加權(quán)流量拆分和基于 HTTP 標(biāo)頭的匹配和操作。該功能仍在開發(fā)中,許多供應(yīng)商已開始提供實(shí)驗(yàn)性支持,因此預(yù)計網(wǎng)關(guān) API 將穩(wěn)步向前發(fā)展。

原文:https://nonamesecurity.com/blog/the-new-way-to-expose-apis-in-kubernetes-cluster

標(biāo)簽: Ingress Kubernetes