Istio中的客户端IP地址

时间:2019-11-14 10:03:35

标签: amazon-web-services kubernetes istio

所以我有这样的设置:

AWS NLB(向前)-> Istio-> Nginx吊舱

现在,我正在尝试在Istio层实施速率限制。我点击了this链接。但是,我仍然可以请求比配置更多的API。查看更多内容,我在Nginx中记录了X-Forwarded-For标头,它为空。

那么,当我使用NLB时如何在Istio中获得客户端IP? NLB转发客户端IP,但是如何?在标题中?

编辑:

Istio版本:1.2.5

istio-ingressgateway配置为NodePort类型。

1 个答案:

答案 0 :(得分:1)

根据有关网络负载平衡器的AWS documentation

  

网络负载平衡器在开放系统互连(OSI)模型的第四层起作用。它每秒可以处理数百万个请求。负载均衡器收到连接请求后,它将从目标组中选择一个目标作为默认规则。它会尝试在侦听器配置中指定的端口上打开到所选目标的TCP连接。

...

  

在创建目标组时,请指定其目标类型,该类型确定是通过实例ID还是IP地址注册目标。如果按实例ID注册目标,则客户端的源IP地址将保留并提供给您的应用程序。如果按IP地址注册目标,则源IP地址是负载均衡器节点的专用IP地址。


使用NLB时,有两种保留客户端IP地址的方法:

1 .: NLB在源地址中保留客户端IP地址  通过实例ID注册目标时。

因此,客户端IP地址仅在特定的NLB配置中可用。您可以在aws documentation中阅读有关目标组的更多信息。


2 .:代理协议标头。

可以用于发送其他数据,例如标头中的源IP地址。即使您通过IP地址指定目标。

您可以按照aws documentation的指南和示例来配置代理协议。

  

要使用控制台启用代理协议

     
      
  1. 通过https://console.aws.amazon.com/ec2/打开Amazon EC2控制台。

  2.   
  3. 在导航窗格中的负载平衡下,选择目标组

  4.   
  5. 选择目标组。

  6.   
  7. 选择说明编辑属性

  8.   
  9. 选择启用代理协议v2 ,然后选择保存

  10.