使用Docker的API网关选项有哪些?

11

我已经创建了几个RESTful微服务并将它们Docker化。现在我想为它们创建一个基于Web的用户界面,并能够创建用户并授予权限以使用其中的一些API。

我知道我需要某种API网关。我的第一个想法是可以通过一些django应用程序来实现UI和手动代理所有请求到API,但这似乎非常枯燥。也许有其他选择?我读过Tyk,但找不到有关添加用户并授予权限的任何信息。

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

4个回答

18

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

还有一些开源工具,如:

我决定使用tyk,因为它有一个漂亮的UI控制台和可靠的文档。所有这些都在Quora上提到过,当你想购物时很方便 :)


创建用户并为其授予API权限如何? - user1685095
@user1685095,请查看我的新答案,其中包含有关用户/身份验证/权限的解决方案。当然,它专注于AWS - 因此,如果需要更广泛的API Gateway建议,则此处的答案更好(很棒,@milan!)。 - cellepo

5
如果你喜欢动手,你可以很容易地实现自己简化的API网关。我认为这种方法完全符合微服务范例——实现具有有限功能的简单服务,它只做一件事情,但做得很好。
我已经写了一篇关于这个主题的教程(使用Node.js为Docker化的微服务实现简单的API网关)。我的例子大约有100行JavaScript代码,它使用node-docker-monitor来监听Docker事件,使用http-proxy来处理客户端的HTTP请求。

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

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

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


1

除非我弄错了(我对容器有点新),我认为所有这些来自Amazon AWS的解决方案(使用AWS API Gateway本身作为公共访问的前置)也属于在公共API网关后运行/编排Docker容器的免费增值解决方案类别:

以下是AWS博客上关于如何使用AWS API Gateway的相关内容:

根据您的需求,这些Amazon AWS提供的任一选项也应满足用户、帐户、权限、授权等要求:

顺便说一下,我认为在使用这些服务进行架构设计时,不需要任何中介管理/计算/服务器(尽管可以插入AWS EC2和/或AWS Lambda的计算以实现任何目的),因为它们都是AWS服务[管理其功能]本身。

这显然侧重于 AWS - 但是肯定所有主要的云平台都有自己类似的解决方案,大多数情况下。 - cellepo

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接