如何在 Kubernetes 中选择 API 网关?

How to choose an API gateway in Kubernetes?

我们在微服务场景中使用 Zuul 作为 API 网关已有一段时间,最近我们决定转向 Kubernetes 并选择一种更云原生的方式。

经过一些调查和阅读 Istio 文档后,我们对 API Kubernetes 中的网关选择有一些疑问:

我假设 Zuul offers a lots of features as an edge service for traffic management, routing and security functions. It has to declare API Gateway the main point of accessing microservices by the external clients as per Microservice Architecture pattern Design。但是,Zuul 需要以某种方式发现底层微服务,对于 Kubernetes,您可能需要调整 Kubernetes Discovery Client,它定义了 API 网关如何检测路由并将网络流量传输到嵌套服务的规则。

根据设计,Istio 代表服务网格 architecture and becomes Kubernetes oriented solution with smooth integration as well. The main concept here is using advanced version of Envoy proxy by injecting sidecars into Kubernetes Pods with no need to change or rewrite existing deployment or use any other methods for service discovery purposes. Zuul API Gateway can be fully replaced by Istio Gateway resource as the edge load balancer for ingress or egress HTTP(S)/TCP connections. Istio contains a set of traffic management 可以包含在一般配置中的功能。

您可能对功能性 Istio 设施的其他基本概念感兴趣,例如:

我们使用Kong Gateway。这是非常简单的基于 nginx 的网关。易于安装且随时可用。