使用 Kubernetes 运行的服务的 API 网关?

Posted

技术标签:

【中文标题】使用 Kubernetes 运行的服务的 API 网关?【英文标题】:API gateway for services running with Kubernetes? 【发布时间】:2021-05-10 09:29:07 【问题描述】:

我们的所有服务都使用 Kubernetes 运行。我们想知道部署我们自己的 API 网关的最佳做法是什么,我们想到了 2 个解决方案:

    在 Kubernetes 集群之外部署 API 网关,即使用 Kong。这意味着集群的入口将连接到外部网关。网关可以是虚拟机,也可以是物理机,您可以通过复制多个网关实例进行扩展

    从 Kubernetes 内部部署网关(然后可能连接到外部 L4 负载均衡器),即大使。但是,使用这种方法,每个集群只能有 1 个网关。防止容错的唯一方法是实际复制整个 K8s 集群

什么是典型的设置,什么更好?

【问题讨论】:

你的答案不能只有一个答案。许多事情取决于您的要求和环境配置。你在使用云环境吗?您是否考虑过将Ingressrewrites 一起使用?你有多少个集群?有什么场景吗? 【参考方案1】:

kubernetes 中 api 网关的典型设置是使用负载平衡器服务,如果您使用的云提供商支持动态提供负载平衡器(所有主要的云供应商,如 gcp、aws 或 azure 都支持它),或者使用入口控制器更常见。

这两个选项都可以水平扩展,因此您具有容错能力,实际上已经有使用 kong 的入口控制器的解决方案

https://github.com/Kong/kubernetes-ingress-controller

【讨论】:

以上是关于使用 Kubernetes 运行的服务的 API 网关?的主要内容,如果未能解决你的问题,请参考以下文章

kubernetes部署spring cloud微服务项目

Kubernetes 集群中两个服务之间使用 Ingress 作为 API 网关的通信

Spring Cloud Kubernetes 与 Kubernetes API 客户端

在kubernetes 集群内访问k8s API服务

如何基于 Kubernetes 开发高可靠服务?

React w/Kubernetes 部署的 API 给出了 cors 错误