繁体   English   中英

向外部服务器请求时如何代理 Kubernetes 容器中的 IP 地址

[英]how to proxy IP address in Kubernetes container when requesting to foreign server

我正在尝试向外部服务器发出 GET 请求。 但是出于安全考虑,国外服务器需要我们的 IP 地址。

现在的问题是我在 Kubernetes 的 pod 中运行我的应用程序,其中包含三个节点。 当我发送请求时,它需要 kubernetes 节点之一的 IP 地址。 我可以将 static IP 地址添加到我的所有节点。 但据我所知,最好的做法是只向外界发布网关(入口)IP 地址。 其他一切都应该隐藏起来。

所以我尝试像这样代理我的 axios 请求:

var res = await axios.get('https://someapi.com', {
    proxy: {
        host: 'ingressIP', //static ip
        port: 80
    }
});

但是请求仍然返回一个错误,说 IP 是不允许的。 它返回了我的 POD 所在的 kubernetes 节点的 IP 地址。

我不确定您是否能够以某种方式通过入口传递您的流量。

我们也有同样的问题。 我们需要从特定 IP 地址向第三方服务器发送请求。

但是我们解决了这个问题有点不同,我们刚刚使用 static IP 创建了一个新的小型服务器,在那里安装了Squid代理服务器并将我们的应用程序配置为使用 Squid 服务器作为 Z293C9EA246FF9985DC6F62A650F79 转发代理。

Squid 有很多功能,IMO 对于这样一个简单的用例来说相当臃肿; 我建议使用更轻量级的东西,例如tinyproxy此处为 docker image)。 因此,您可以做的是使用该映像创建一个Deployment ,使用 nodeSelector 将其固定到特定节点(第 3 方 API 允许的具有IP的节点),创建一个指向它的Service ,并将其用作您的代理要求。 但是,这种方法有一个缺点——您只是在基础架构中添加了一个(另一个)单点故障。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM