簡體   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