问题描述
我正在尝试向外部服务器发出GET请求。但是出于安全目的,外部服务器需要我们的IP地址。
现在的问题是我正在具有三个节点的Kubernetes的pod中运行我的应用程序。 当我发送请求时,它使用kubernetes节点之一的IP地址。 我可以将静态IP地址添加到所有节点。但是据我了解,最佳实践是仅将网关(入口)IP地址发布给外界。其他所有内容都应该隐藏。
所以我试图像这样代理我的axios请求:
<div className="links-nav">
<NavLink className="item" activeClassName="active" to="/dashboard">
<img
src="/images/svgs/dashboard.svg"
className="home"
alt="home"
/>
<span
className="nav-content"
onClick={(event) => this.navLinks(event)}
>
Dashboard
</span>
</NavLink>
</div>
.links-nav .active {
font-style: normal;
font-weight: 600;
font-size: 18px;
color: #000000;
}
.link-nav .home .active {
background :#0000FF
但是请求仍然返回错误,表明不允许使用IP。它返回了我的POD所在的kubernetes节点的IP地址。
解决方法
我不确定,您是否能够以某种方式通过入口传递流量。
我们也有同样的问题。我们需要从特定的IP地址向第三方服务器发送请求。
但是我们解决了一些不同,我们只是创建了一个带有静态IP的新小型服务器,并在其中安装了Squid代理服务器,并将我们的应用程序配置为使用Squid服务器作为HTTP转发代理。
,乌贼具有许多功能,而IMO对于这样一个简单的用例却显得肿。我建议使用更轻便的东西,例如tinyproxy(docker映像here)。因此,您可以做的就是使用该图像创建一个Deployment
,并使用nodeSelector将其固定到一个特定节点(具有第三方API允许的IP的那个节点),然后创建一个Service
指向它,并在您的请求中将其用作代理。但是,这种方法有一个缺点-您刚刚在基础架构中添加了(另一个)单点故障。