【发布时间】:2019-07-14 09:59:23
【问题描述】:
此处解释的 IP 白名单/黑名单示例 https://kubernetes.io/docs/tutorials/services/source-ip/ 使用 source.ip 属性。但是,在 kubernetes(运行在 docker-for-desktop 上的 kubernetes 集群)中,source.ip 返回 kube-proxy 的 IP。建议的解决方法是使用 request.headers["X-Real-IP"],但它似乎不起作用并在 mac 的 docker-for-desktop 中返回 kube-proxy IP。
https://github.com/istio/istio/issues/7328 提到了这个问题并表示:
使用终止客户端连接并打开与您的节点/端点的新连接的代理。在这种情况下,源 IP 将始终是云 LB 的源 IP,而不是客户端的源 IP。
使用数据包转发器,客户端发送到负载均衡器 VIP 的请求最终会到达具有客户端源 IP 的节点,而不是中间代理。
第一类负载均衡器必须在负载均衡器和后端之间使用商定的协议来传递真实的客户端 IP,例如 HTTP X-FORWARDED-FOR 标头或代理协议。 p>
谁能帮助我们如何定义一个协议来从负载均衡器获取客户端 IP?
【问题讨论】:
标签: kubernetes kubernetes-ingress istio docker-for-mac kube-proxy