凭借明确定义的一致性和分层API模型,Gateway API已经展现出许多前景和长远发展的可能。
译自 Unifying Kubernetes Service Networking (Again) with the Gateway API 。
Gateway API,先前被称为Services API,再之前被称为Ingress V2,首次在2019年圣迭戈的KubeCon大会上进行了详细的面对面讨论。Ingress和Kubernetes网络API已经存在许多众所周知的和充分记录的局限性。Gateway API旨在重新设计这些API,建立在对Services、Ingress和服务网格社区的经验教训之上。
与一群Ingress和Service控制器的实现者聚在一起,我们提出了希望在Kubernetes网络API 2.0版本中拥有的特性:
一年多后,有几个Gateway控制器实现正在进行中,用户可以使用这些实现。这种实现之间的压倒性一致性证明了供应商和用户对服务网络改进的需求。
为了理解Gateway API如何实现这些目标,让我们介绍它的两个资源:
一个gateway+route在某种程度上等同于一个 Ingress 资源。因为它们是两个资源,所以它允许基础设施团队拥有网关(并将策略和配置附加到其上),而应用程序所有者拥有自己的路由。这允许这些组之间的较少直接协调和更多的开发者自治。
如果将这个概念进一步发挥,它还允许许多团队共享同一个网关。网关提供了它们与路由绑定的内置控制,甚至跨命名空间边界。这使管理员能够控制应用程序面向客户端的暴露方式。下图显示了两个不同的团队在各自的命名空间中使用相同的负载均衡器(由网关资源建模)。
这种安排允许应用程序所有者定义流量路由、流量加权、重定向或健康检查,因为这些属性与它们的应用程序紧密相关。基础设施所有者可能希望定义应用程序可以使用哪些负载均衡器,使用哪些 TLS 证书或哪些源 IP 允许连接,因为这些是与应用程序无关的平台级属性。关注点的分离在不同的组织之间可能有所不同,API 模型还提供了灵活性来匹配不同的所有权模型。
Gateway API的可扩展性还支持了以前不可能实现的新用例。上周发布的来自谷歌云的 GKE 网关控制器允许 HTTPRoutes 引用不同集群中的服务。这为像多集群高可用性或蓝绿部署/多集群流量分裂等多集群网络打开了新的大门。谷歌的网关控制器能够利用其全球网络进行此多集群负载均衡,在流量进入集群之前就做出路由决策。
虽然网关 API 已经展示了统一集群入口的承诺,但已经有使用网关和路由资源对基于 Sidecar 的服务网格和 TCP/UDP 负载均衡建模的提案。这将统一路由 API,这可能会降低新服务网格用户的入门门槛,并在第4层和第7层之间提供某种融合。
网关 API 的旅程还在起步阶段,还有大量的工作要做。得益于明确定义的一致性和分层 API 模型,网关 API 已经展示了巨大的前景和漫长的前进道路。