k8s 中企业代理的透明代理

k8s 中企业代理的透明代理

尝试将外部应用程序部署到企业 k8s 集群中。离开此外部应用程序的所有出站流量都必须经过企业代理才能进入互联网。问题是应用程序没有为代理内置环境变量支持。因此,应用程序不会http_proxy拾取和使用设置等,我们无法修改代码以尊重环境变量。

我们的想法是实现一个透明代理,它将拦截来自外部应用程序 pod 的所有传出流量,重新路由到公司代理,最后路由到外部互联网地址。是否有任何软件可以在 k8s 中配置为透明代理,同时还能够将请求转发到公司代理?

我们尝试使用 nginx,但主要问题是它似乎无法配置为使用公司代理。我们已成功配置 nginx 以使用proxy_pass并将请求重新路由到正确的外部 URL,但它没有使用代理,随后收到超时。

任何建议都值得赞赏。

答案1

你的问题有两个方面

首先,nginx 通常是一个反向代理,您需要一组防火墙规则之类的东西,这些规则会将端口 80 或 443 上所有出站流量的目标地址重新映射到代理。您可以使用 squid 作为适当/正向 http 代理。

您也许可以使用 sidecar 容器完成所有这些操作,但是您仍然会遇到我的第二点问题。

第二个问题是 HTTPS(端口 443 上的流量),您无法正常透明地代理它,您需要一个 HTTP CONNECT 操作来打开到远程服务器的端口,以便它可以隧道传输 HTTPS 流量,否则代理将需要在 HTTPS 中间进行人为操控,并且容器中的应用程序将会失败,除非它已配置为信任代理提供的任何证书。

答案2

因此,数据库位于“美国西部 2”,但从数据库中提取数据的 Azure 函数位于“美国中北部”,并且由于这些资源位于不同的数据中心,因此这是“不寻常的”,因为为什么不把所有内容都放在同一区域呢?

您可以选择 JSON 视图并搜索可疑 IP,以确认警报中报告的 IP 与前往该资源的 Azure 函数的出站 IP 范围相匹配。如果您遇到同样的问题,可以在“outboundIpAddresses”字段中找到它。

相关内容