服务化应用对API Gateway的功能需求

应用对API Gateway的需求

采用Gateway和VirtualService实现的Istio Ingress Gateway提供了网络入口处的基础通信功能,包括可靠的通信和灵活的路由规则。但对于一个服务化应用来说,网络入口除了基础的通讯功能之外,还有一些其他的应用层功能需求,例如:

  • 第三方系统对API的访问控制
  • 用户对系统的访问控制
  • 修改请求/返回数据
  • 服务API的生命周期管理
  • 服务访问的SLA、限流及计费
  • ….
    服务化应用对API Gateway的功能需求
    Kubernetes ingress, Istio gateway and API gateway的功能对比

API Gateway需求中很大一部分需要根据不同的应用系统进行定制,目前看来暂时不大可能被纳入K8s Ingress或者Istio Gateway的规范之中。为了满足这些需求,涌现出了各类不同的k8s Ingress Controller以及Istio Ingress Gateway实现,包括Ambassador ,Kong, Traefik,Solo等。

这些网关产品在实现在提供基础的K8s Ingress能力的同时,提供了强大的API Gateway功能,但由于缺少统一的标准,这些扩展实现之间相互之间并不兼容。而且遗憾的是,目前这些Ingress controller都还没有正式提供和Istio 控制面集成的能力。

备注:

  • Ambassador将对Istio路由规则的支持纳入了Roadmap https://www.getambassador.io/user-guide/with-istio/
  • Istio声称支持Istio-Based Route Rule Discovery (尚处于实验阶段) https://gloo.solo.io/introduction/architecture/