首页 > 解决方案 > 如何使我的微服务只能由 api 网关访问

问题描述

我想知道如何保护我的 Nodejs 微服务,以便只有 API 网关可以访问它。目前微服务暴露在我机器上的一个唯一端口上,可以直接访问,无需通过网关。这违背了网关作为系统中安全和授权信息交换的唯一入口点的目的。

微服务和网关目前是用 Nodejs 和 express 构建的。

该计划最终将其部署在云(数字海洋)上。我会很感激任何回应。谢谢。

标签: node.jsexpressmicroservicesgateway

解决方案


Kubernetes 可以解决这个问题。

Kubernetes 管理容器,每个容器都可以是一个微服务。在将微服务连接到网关服务器时,您可以选择只允许与网关服务器的外部连接。你的 kubernetes 集群中有一个负载均衡器/nginx,它将请求重定向到你的网关服务器。

Kubernetes 还有许多其他功能,例如:

  • 服务发现:除非您的所有服务都具有静态 IP,否则您的每个微服务的 IP 都可能在重新启动/部署时发生变化。服务发现解决了这个问题。
  • 高可用性 & 水平扩展 & 零停机时间:您可以为每个服务配置多个副本。因此,当其中一项服务出现故障时,仍有其他副本活着来处理剩余的请求。这也有助于 CICD。使用 github action 之类的东西,您可以制作流畅的 CICD 管道。当你部署一个新的 docker 镜像(更新一个微服务)时,kubernetes 会先启动一个新的容器,然后杀死旧的容器。因此,您的停机时间为零。

如果您正在使用微服务,那么您绝对应该深入了解 Kubernetes。


推荐阅读