API 网关与 docker 的选项是什么?

What are the option to API gateway with docker?

我已经创建了几个 RESTful 微服务并将它们 dockerized。现在我想为他们提供基于网络的 UI 以及创建用户并授予他们使用某些 API 的权限的能力。

我知道我需要某种 API 网关。我的第一个想法是,我总是可以采用这种蛮力方式:创建一些可以服务 UI 的 Django 应用程序,并手动将所有请求代理到 APIs,但这看起来很乏味。也许有一些选择?我已经准备好使用 Tyk,但找不到任何关于添加用户和向他们授予权限的信息。

我可能可以创建一个应用程序作为 API 网关并通过编写一些可以对其建模的代码来自动代理请求。因此,例如,我基本上需要外部 url 到实际 api url 和一些授权逻辑之间的映射。也许已经有类似的东西了?

我一直在寻找类似的东西,包括对速率限制的支持、UI 控制台等。它归结为一些免费增值工具,例如:

和一些开源的:

我决定使用 tyk,因为它有一个很好的 UI 控制台和可靠的文档。他们都在 Quora 上提到了,当你想去购物时,这很好:)

如果您喜欢亲自动手,可以很容易地实现自己的简化 API 网关。我相信这种方法非常适合微服务范式——实现具有有限功能的简单服务,它只做一件事,但做得很好。

我写了一篇关于这个主题的教程(使用 Node.js 为 Dockerized 微服务实现简单的 API 网关)。我的示例大约有 100 行 JavaScript 代码,它使用 node-docker-monitor to listen to Docker events and http-proxy 来处理来自客户端的 HTTP 请求。

https://memz.co/api-gateway-microservices-docker-node-js/

或使用 SkyDNS 和 Nginx 的替代解决方案

https://memz.co/reverse-proxy-nginx-docker-microservices/

除非我弄错了(我对容器有点陌生)-我认为所有这些解决方案都来自 Amazon AWSAWS API Gateway 本身在前面其中任何一个用于 public 访问)也将属于 免费增值解决方案 用于 运行 / 编排 Docker 容器的类别public API 网关:

以下是关于使用 AWS API 网关的 AWS 博客:

并且根据您的要求,其中任何一个(也来自 Amazon AWS)也应满足用户、帐户、权限、授权等要求:

顺便说一句,我认为任何中间管理/计算/服务器对于使用其中任何一个进行架构都不是必需的(尽管仍然可以出于任何目的插入来自 AWS EC2 and/or AWS Lambda 的计算),因为它们都是 AWS 服务 [管理其功能] 的。

在 .net 世界中使用 .net Core webapi 或其他服务时:Ocelot 是一个选择。

https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot