Categories
程式開發

Kubernetes Ingress升級為GA,帶來兩大主要變化


在2015年首次引入Ingress API後,Kubernetes團隊在最近的Kubernetes 1.19版本中將該API升級為GA。

入口API用於將外部HTTP/HTTPS流量路由到後端Kubernetes服務。儘管這個API還處於測試階段,但它已經被廣泛使用,因為它是將外部流量以基於路徑的形式路由給Kubernetes服務的唯一方法。正如穀歌開源博客所述,升級到GA的兩個主要變化是pathType和IngressClass。

在2019年11月的KubeCon/CloudNativeCon大會演講中,Christopher M Luciano(IBM)和Bowei Du(谷歌)演示了GA增強版預覽。他們指出,以前的API在“確保巨大的可移植性”方面存在限制,並解釋了GA版本的變化。這些限制導致大量第三方擴展和產品的出現——免費的和商業的——它們提供了路由、身份驗證、訪問控制、速率限制和度量收集等附加特性,其中包括HAProxy、nginx、Traefik、Kong、 Ambassador和Contour等等。 Kubernetes項目本身維護GCE(谷歌Kubernetes引擎使用)和nginx控制器。

Ingress控制器通常是由雲供應商為託管Kubernetes實現的組件,“完成”Ingress功能——也就是說,通常通過負載均衡器設置外部流量代理,並基於Ingress配置和同步路由規則。當Kubernetes部署在像GCP、AWS和AKS等雲平台上時,Ingress控制器由雲供應商提供,雲供應商的負載均衡器為其提供支持。當然,也可以選擇使用第三方Ingress控制器,如nginx或HAProxy。

在路由方面,pathType對之前的配置進行了擴展,允許委託給底層的Ingress控制器。除了委託之外,通過設置“pathType: ImplementationSpecific”——可以是精確匹配和前綴匹配,實現更靈活的配置,這在Kubernetes 1.19中是必需的。

入口類封裝了有關控制器的信息及其配置信息。然後,Ingress定義將引用這個類,它將取代舊的、非標準的kubernetes.io/ingress.class註解。

以前通過註解和ConfigMaps來擴展Ingress的配置。在他們的演講中,Luciano和Du還提到API的關鍵變化:清理對像模型、對規範的一些調整以及備用後端類型的靈活性。最後一點是指支持備用後端(如存儲桶),而不僅僅是Kubernetes服務。新版本的目標之一是通過擴展機制為特定於供應商的行為提供標準機制。 Ingress API是通用的,與雲平台無關,並獨立於Ingress控制器。這些特性中的大多數都包含在1.18發行版中。

跡象表明,Ingress的開發路線圖是維護版本v1,同時開發“V2 Ingress API或具有超功能集的完全不同的API”。 “網關”是一個開源的Kubernetes API,“設計它是為了擴展Ingress的能力”,這可能是朝著這個方向邁出的一步。

原文鏈接

Kubernetes入口現已全面上市