在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中是必需的。
IngressClass封装了有关控制器的信息及其配置信息。然后,Ingress定义将引用这个类,它将取代旧的、非标准的kubernetes.io/ingress.class注解。
以前通过注解和ConfigMaps来扩展Ingress的配置。在他们的演讲中,Luciano和Du还提到API的关键变化:清理对象模型、对规范的一些调整以及备用后端类型的灵活性。最后一点是指支持备用后端(如存储桶),而不仅仅是Kubernetes服务。新版本的目标之一是通过扩展机制为特定于供应商的行为提供标准机制。Ingress API是通用的,与云平台无关,并独立于Ingress控制器。这些特性中的大多数都包含在1.18发行版中。
有迹象表明,Ingress的开发路线图是维护版本v1,同时开发“V2 Ingress API或具有超功能集的完全不同的API”。“Gateway”是一个开源的Kubernetes API,“设计它是为了扩展Ingress的能力”,这可能是朝着这个方向迈出的一步。
原文链接:
领取专属 10元无门槛券
私享最新 技术干货