繁体   English   中英

Kubernetes 对具有 IP 白名单的外部端点的出站调用

[英]Kubernetes outbound calls to an external endpoint with IP whitelisting

我们在 google cloud 的 Google Kubernetes Engine 上使用 Kubernetes。 我们的系统根据请求动态生成实例,这些实例调用外部 Web 服务。 外部服务生成图像,每个实例的带宽使用量不小。

此外部 Web 服务已配置 IP 白名单。

有什么方法可以将来自选定 Pod(它们在节点池中分组)的所有请求集中到具有单个 IP 的外部服务?

答案是Yes ,实际上有几种方法可以实现这一目标。 我将回答一个简单的方法来完成这项工作。 通过代理服务器建立隧道。

也可以将外部 ip 分配给所有节点并允许它们来自 Web 服务,但许多工程师不喜欢这样做,因为没有人愿意出于一百万个安全原因将节点暴露给外部世界。

在同一个集群中添加一个单独的非常小的可能是 nano 虚拟机,并安装一个HAProxyNginx或您最喜欢的代理。 或者在您已经拥有的实例之一上安装代理,但确保它附加了外部 ip,并且它应该在您的集群内以减少任何延迟问题。

现在绑定代理中的 url 以接受到特定端口的连接,并将它们路由到具有外部 Web 服务的实例。 这是 HAProxy 代码的示例。

listen port_2020
  bind :2020
  mode tcp
  server external-web-service externalwebservice.mycompany.com:443 check

完成此设置后。 让我们假设你的K8S运行在大师10.0.1.0/24在和节点10.0.2.0/24 并在10.10.1.101/32某处添加了此附加代理服务,外部 ip 为52.*.*.*并在同一 VPC 中。 现在您所要做的就是在10.10.1.101上打开通信以接受从10.0.2.0/24port 2020通信。

现在您的 pod 必须继续轮询10.10.1.101:2020/api/health/check而不是直接轮询外部网络服务。

现在您可以在您的网络服务虚拟机上仅将代理虚拟机 ip 52.*.*.*列入候补名单,而不会出现任何问题。

这只是如何完成的一个例子。 但是有几种方法可以做到这一点。 使用 sidecar 也有许多高级方法可以做到这一点。

希望这是有帮助的。

暂无
暂无

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

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