入口控制器与 api 网关

Ingress controller vs api gateway

我想知道 api 网关 入口控制器 之间的 is/are 区别。人们倾向于互换使用这些术语,因为它们提供的功能相似。当我说,'Ingress controller';不要将它与 kubernetes 提供的 Ingress 对象混淆。另外,如果您能解释其中一个比另一个更有用的场景,那就太好了。

api 网关是云原生世界中流量路由器的通用术语,'Ingress controller' 是 kubernetes 世界中 api-gateway 的实现吗?

入口控制器允许单个ip端口通过入口规则访问k8s中的所有服务运行。入口控制器服务设置为负载平衡器,因此可以从 public 互联网访问。

api 网关用于应用程序路由、速率限制、安全、请求和响应处理以及其他与应用程序相关的任务。比如说,您有一个基于微服务的应用程序,其中请求需要从多个微服务收集信息。您需要一种方法将用户请求分发到不同的服务并收集来自所有微服务的响应并准备要发送给用户的最终响应。 API Gateway 就是为您完成这种工作的。

确实两者都有一组相交的特性,路径映射、路径转换、负载均衡等

然而,它们确实不同。我可能是错的,但你在 Kubernetes 中创建了一个 Ingress 1) 运行 2) 更像是一个反向代理 "kubernetes native".

API 网关可以安装在任何地方(尽管现在 Kubernetes 中有很多 运行 原生的,比如 Ambassador、Gloo、Kong),而且它们确实有更多可用的功能,比如开发者门户、rate限制等

我个人使用入口作为网站的反向代理。 API API 的网关。这并不意味着您不能对 api 使用入口。但是,您没有充分利用它们。

入口

Ingress 管理流量并将其路由到 Kubernetes 服务。

Ingress rules/config yaml and backed by Ingress controller(Nginx 入口控制器著名之一)

Ingress 控制器创建一个 Kubernetes 服务,使用该服务公开为 LoadBalancer.

ingrss 控制器的其他列表:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/

为了简单理解,你可以把ingress看成是Nginx服务器,它只是根据规则集把流量转发给服务。

ingress 没有 API 网关那样的功能。某些入口不支持身份验证、速率限制、应用程序路由、安全性、合并响应和请求以及其他 add-ons/plugin 选项。

API 网关

API 网关也可以完成简单路由的工作,但它主要用于需要更高灵活性、安全性和配置选项的情况。

当您选择 Ingress 或 API 网关时,有很多参数需要比较,但更多取决于您的用例。

API 像 KrakenD、Kong 这样的网关比 ingress 有更好的方式,像 Oauth 插件、API 密钥选项,支持rate-limiting,API aggregation.

Kong API 网关也有一个很好的插件选项,如果你还想配置 logging/monitoring 流量,你可以使用它。

市场上有很多 API 网关与入口控制器相同,您可以查看下面的 API 网关功能和比较。

阅读更多信息:https://medium.com/@harsh.manvar111/api-gateway-identity-server-comparison-ec439468cc8a

如果您的用例并且确定您的需求,您也可以将入口用于生产API网关不是必需的。