在2015年首次引入Ingress API后,Kubernetes团队在最近的Kubernetes 1.19版本中将该API升级为GA。
Ingress 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中是必需的。
Comments