在 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 的能力”,这可能是朝着这个方向迈出的一步。
原文链接:
Kubernetes Ingress Is Now Generally Available
评论