使用 azure aks 获取客户端原始 ip 地址
Getting client original ip address with azure aks
我目前正在将 AWS EKS 集群复制到 Azure AKS。
在我们的 EKS 中,我们使用带有代理协议的外部 Nginx 来识别客户端真实 IP 并检查它是否在我们的 Nginx 中列入白名单。
为此,我们在 AWS 中添加了 Kubernetes 服务注释 aws-load-balancer-proxy-protocol
以支持 Nginx proxy_protocol
指令。
现在这一天到了,我们想 运行 我们的集群也在 Azure AKS 上,我正在尝试采用相同的机制。
我看到 AKS Load Balancer 对 IP 进行哈希处理,所以我从我的 Nginx conf 中删除了 proxy_protocol
指令,我尝试了几件事,我知道 Azure Load Balancer 没有用作代理,但我确实在这里阅读:
AKS Load Balancer Standard
我尝试使用 loadBalancerSourceRanges
api 在 Kubernetes 服务级别将 IP 列入白名单,而不是在 Nginx 级别。
但我认为负载均衡器将 IP 发送到已经散列的集群(这是正确的术语吗?)并且集群似乎忽略了 loadBalancerSourceRanges
下的 ips 并通过它们。
我现在被困在试图了解我缺乏知识的地方,我试图从两端(负载均衡器和 kubernetes 服务)来处理它,但他们似乎都不配合我。
鉴于我的失败,将客户端真实 IP 地址传递到我的 AKS 群集的“正确”方式是什么?
来自文档:https://docs.microsoft.com/en-us/azure/aks/ingress-basic#create-an-ingress-controller
If you would like to enable client source IP preservation for requests
to containers in your cluster, add --set controller.service.externalTrafficPolicy=Local
to the Helm install
command. The client source IP is stored in the request header under
X-Forwarded-For
. When using an ingress controller with client source
IP preservation enabled, SSL pass-through will not work.
您可以使用real_ip
和geo
模块创建IP白名单配置。或者,loadBalancerSourceRanges 应该允许您通过更新关联的 NSG 将任何客户端 IP 范围列入白名单。
我目前正在将 AWS EKS 集群复制到 Azure AKS。
在我们的 EKS 中,我们使用带有代理协议的外部 Nginx 来识别客户端真实 IP 并检查它是否在我们的 Nginx 中列入白名单。
为此,我们在 AWS 中添加了 Kubernetes 服务注释 aws-load-balancer-proxy-protocol
以支持 Nginx proxy_protocol
指令。
现在这一天到了,我们想 运行 我们的集群也在 Azure AKS 上,我正在尝试采用相同的机制。
我看到 AKS Load Balancer 对 IP 进行哈希处理,所以我从我的 Nginx conf 中删除了 proxy_protocol
指令,我尝试了几件事,我知道 Azure Load Balancer 没有用作代理,但我确实在这里阅读:
AKS Load Balancer Standard
我尝试使用 loadBalancerSourceRanges
api 在 Kubernetes 服务级别将 IP 列入白名单,而不是在 Nginx 级别。
但我认为负载均衡器将 IP 发送到已经散列的集群(这是正确的术语吗?)并且集群似乎忽略了 loadBalancerSourceRanges
下的 ips 并通过它们。
我现在被困在试图了解我缺乏知识的地方,我试图从两端(负载均衡器和 kubernetes 服务)来处理它,但他们似乎都不配合我。
鉴于我的失败,将客户端真实 IP 地址传递到我的 AKS 群集的“正确”方式是什么?
来自文档:https://docs.microsoft.com/en-us/azure/aks/ingress-basic#create-an-ingress-controller
If you would like to enable client source IP preservation for requests to containers in your cluster, add
--set controller.service.externalTrafficPolicy=Local
to the Helm install command. The client source IP is stored in the request header underX-Forwarded-For
. When using an ingress controller with client source IP preservation enabled, SSL pass-through will not work.
您可以使用real_ip
和geo
模块创建IP白名单配置。或者,loadBalancerSourceRanges 应该允许您通过更新关联的 NSG 将任何客户端 IP 范围列入白名单。