我仍然在学习有关微服务体系结构的知识,并且无法清楚地了解如何解决给定的问题。
假设我有一个k8s集群,其中包括一些微服务、FE应用程序或部署到其中的任何其他服务。我也有一个入口控制器,它确实消耗了流量和服务的路由。
在这个设置的某个地方,我想把API网关,它将做一些额外的(可定制的)请求,如身份验证,日志记录,添加头等。我们可以把这个功能包装为整个集群的反向代理。我找到了三种可能的解决办法:
AGW在大会前面的集群外:

AGW作为大会主计长:

AGW在进入后的集群内:

在第一种方法中,AGW将所有的流量都发送到入口,但是我们需要有一个“私有域”,入口将被暴露在入口之下。AGW将在公共域下公开,并将流量路由到此私有域。这不是很好,因为大会没有公开在公共领域。例如,我们遇到了一个问题,当时Ingress正在做一些重定向,并且在位置标头中使用它的私有域,而不是公共域。
在第二种方法中,AGW功能嵌入到Ingress中,但是我还没有找到一个适合我们需要的控制器。构建自定义的侵入控制器听起来不太好。
在第三种情况下,AGW在集群内,但inside没有进行任何路由。所有路由(和负载平衡)将发生在AGW中。
还有其他解决办法吗?如果没有,你会推荐哪一种?或者可能有一种不同的方法来包含提到的反向代理的趣味性?
发布于 2021-05-26 08:53:37
第二和第三种解决方案通常效果最好。宏不具有负载平衡,配置负载平衡规则的是服务对象。
如果您能够设法使用Api网关作为侵入控制器(如大使或Istio )(这就是我所知道的),那就更好了。您将删除额外的额外网络跳。
因为大使和Istio都有kubernetes思想,所以使用kubernetes Resource对象,您可以使用这些侵入控制器来控制任何您喜欢的东西。
发布于 2021-05-26 08:26:34
第三个AGW中的
在集群内,但inside没有进行任何路由。所有路由(和负载平衡)将发生在AGW中。
AGW可以使其将请求转发到另一个服务,而无需为路由和负载平衡做任何特殊的工作。它可以将变异请求转发到服务的ClusterIP或位于微服务Pods前面的内部DNS。您不需要仅为了将平衡负载到单个服务上就需要侵入。
一般说来,进题可以用于负载平衡,也可以不用于负载平衡。当我们想要将平衡负载到多个服务时,我们可以使用Ingress,否则它对做其他事情更有用,例如TLS终端。
https://stackoverflow.com/questions/67700143
复制相似问题