首页 > 解决方案 > 在 Kubernetes 集群中捕获来自 Pod 的传出请求并重定向到不同的目标

问题描述

我有一个有 3 个节点的集群。在每个节点中,我都有一个在 Pod 中运行的前端应用程序和在一个单独的 Pod 中运行的后端应用程序。我将数据从前端应用程序发送到后端应用程序,为此我利用集群 IP 服务和 k8 dns 资源。我的前端还有一个功能,我将数据发送到与我的 k8s 集群无关的单独服务。我使用标准 AJAX 请求将此数据发送到带有有效负载的 url,即http://my-seperate-service-unrelated-tok8.com. 所有这些都可以正常工作,并且集群可以按我的意愿运行。- 我已将此集群部署到 GKE。我现在想使用 minikube 在本地运行这个集群,我已经能够做到,但是,当我在本地运行时,我不想将数据发送到我的外部服务 - 相反,我想将它转发到我的新 Pod将创建或不发送它。



这里的问题是我需要一个代理来拦截传出的网络流量,检查传出的请求是否是我正在寻找的请求,如果它是然后重定向它。

我了解集群中运行的每个节点都有一个运行在节点内的 kube-proxy 服务——用于将流量转发到集群中的相关服务。我想扩展此服务,或者创建一个新的代理服务,我可以在其中侦听到特定 url 的传出流量并将其重定向。这可以在 k8 集群中完成吗?我假设我可以创建一个服务来监听所有传出请求并根据我设置的规则重定向特定请求。</p>

我不确定 k8 集群是否已经配置了我可以简单添加的服务 - 这就是我想到 kube-proxy 的原因,有人能就此提出建议吗?我想添加这个代理,这样当它在 minikube 本地运行或部署到 GKE 时,我不必更改我的代码。



任何帮助是极大的赞赏。谢谢!

标签: kubernetesproxygoogle-kubernetes-engine

解决方案


我做了一个工具,可以帮助您将服务转发到另一个服务、本地端口、来自其他集群的服务等...

通过这种方式,您可以拥有完全相同的 url、端口和代码......但是如果我理解正确,这就是您正在寻找的,底层服务会被“替换”。

这是一个用我的本地 3000 端口替换舞台服务的快速示例 链接服务

这是包含更多信息和示例的存储库:linker-tool

如果您有兴趣,请告诉我您是否需要帮助或有任何问题。


推荐阅读