入口控制器与 api 网关

Posted

技术标签:

【中文标题】入口控制器与 api 网关【英文标题】:Ingress controller vs api gateway 【发布时间】:2020-03-23 02:33:22 【问题描述】:

我想知道 api 网关Ingress 控制器 之间有什么区别。由于它们提供的功能相似,人们倾向于互换使用这些术语。当我说“入口控制器”时;不要将它与 kubernetes 提供的 Ingress 对象混淆。另外,如果你能解释一下一种比另一种更有用的场景,那就太好了。

api 网关是云原生世界中流量路由器的通用术语,而“入口控制器”是 Kubernetes 世界中 api-gateway 的实现吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

+1。但是你在 2019 年发布了这个,它仍然相关还是其中的某些部分已经过时了?您是否介意添加更多信息(如果适用)来详细回答这个关于 API Gateway v/s Ingress 的热门问题。 如果我们有一个负责 API 聚合的前端微服务,是否需要一个 API 网关。例如,BFF 微服务暴露 GraphQL 接口? 这是否意味着 Ingress Controller 应该只有一个路由规则,那就是 API Gateway 的路由规则。 API 网关处理特定服务的路由? 一个入口控制器可以支持多个入口规则。比如说,你想从浏览器访问 grafana/kibana/prometheus/alert manager/application web 界面,那么你可以为每个服务定义一个入口规则,入口控制器会将用户请求路由到适当的后端服务【参考方案2】:

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

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

API Gateway 可以安装在任何地方(尽管现在有很多像 Ambassador、Gloo、Kong 等原生在 Kubernetes 中运行),并且它们确实具有更多可用功能,例如开发人员门户、速率限制等。

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

【讨论】:

【参考方案3】:

入口

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

Ingress rules/config yaml 和 Ingress controller 支持(著名的 nginx 入口控制器)

Ingress 控制器使用 LoadBalancer 制作一个 Kubernetes 服务。

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

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

ingress 没有 API 网关之类的功能。某些入口不支持身份验证、速率限制、应用程序路由、安全性、合并响应和请求以及其他附加组件/插件选项。

API 网关

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

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

API 网关,例如 KrakenD,Kong 比 ingress 更好,具有安全集成,例如 Oauth 插件,API key 选项,它支持 rate-limiting, API 聚合

Kong API 网关还有一个不错的插件选项,如果您还想配置流量的日志记录/监控,可以使用它。

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

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

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

【讨论】:

以上是关于入口控制器与 api 网关的主要内容,如果未能解决你的问题,请参考以下文章

主流云原生微服务API网关成熟度与安全功能对比分析

微服务架构开发实战:API网关意义和常见API网关的实现方式

新品速递:腾讯云 API 网关产品发布

关于API网关性能

api网关相关介绍

Kubernetes环境中的API网关