使用azure aks获取客户端原始IP地址

Swa*_*rly 5 nginx azure-load-balancer azure-aks

我目前正在致力于将 AWS EKS 集群复制到 Azure AKS。在我们的 EKS 中,我们使用带有代理协议的外部 Nginx 来识别客户端真实 IP 并检查它是否在我们的 Nginx 中列入白名单。
为此,我们在 AWS 中添加了 Kubernetes 服务注释aws-load-balancer-proxy-protocol以支持 Nginxproxy_protocol指令。

现在这一天已经到来,我们希望也在 Azure AKS 上运行我们的集群,我正在尝试执行相同的机制。
我看到 AKS 负载均衡器对 IP 进行哈希处理,因此我proxy_protocol从 Nginx 配置中删除了该指令,我尝试了几件事,我知道 Azure 负载均衡器不用作代理,但我确实在这里阅读: AKS 负载均衡器标准
我尝试将 IP 列入白名单在 Kubernetes 服务级别使用loadBalancerSourceRangesapi,而不是在 Nginx 级别。

但我认为负载均衡器将 IP 发送到已经散列的集群(这是正确的术语吗?),并且集群似乎忽略了下面的 iploadBalancerSourceRanges并传递它们。

我现在陷入困境,试图了解我缺乏知识的地方,我尝试从两端(负载均衡器和 kubernetes 服务)处理它,但它们似乎都不与我合作。
鉴于我的失败,将客户端真实 IP 地址传递到我的 AKS 群集的“正确”方法是什么?

Fah*_*eem 9

来自文档:https://learn.microsoft.com/en-us/azure/aks/ingress-basic#create-an-ingress-controller

如果您想为集群中容器的请求启用客户端源 IP 保留,请添加--set controller.service.externalTrafficPolicy=Local到 Helm install 命令。客户端源IP存储在请求头中 X-Forwarded-For。当使用启用了客户端源 IP 保留的入口控制器时,SSL 直通将不起作用。

更多信息也在这里: https: //kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip

您可以使用real_ipgeo模块来创建 IP 白名单配置。或者,loadBalancerSourceRanges应允许您通过更新关联的 NSG 将任何客户端 IP 范围列入白名单。