【问题标题】:Getting client ip using Knative and Anthos使用 Knative 和 Anthos 获取客户端 IP
【发布时间】:2020-10-12 12:52:06
【问题描述】:

我们在由 Knative 和 Anthos 提供支持的 GCP 上的 K8s 集群上使用 Google Cloud Run,但是负载均衡器似乎没有修改 x-forwarded-for(这不是预期的,因为它是 TCP 负载均衡器),而 Istio 不这样做。

您有同样的问题还是仅限于我们的部署? 我知道 Istio 支持这一点,作为他们即将推出的 Gateway Network Topology 的一部分,但在当前的 gcp 版本中不支持。

【问题讨论】:

    标签: kubernetes istio google-cloud-run knative


    【解决方案1】:

    我认为您对当前 Cloud Run for Anthos 设置(无意中)不允许您看到用户的原始 IP 地址的评估是正确的。

    正如您所说,在这种情况下,为 Istio/Knative 创建的网关是云网络负载均衡器 (TCP),当流量路由到 Kubernetes Pod 时,此负载均衡器不会保留客户端的 IP 地址(由于了解 Kubernetes 网络如何与 iptables 等一起工作)。这就是为什么您会看到 x-forwarded-for 标头,但它包含内部跃点(例如 10.x.x.x)。

    我正在与我们的团队跟进此事。之前好像没有注意到。

    【讨论】:

    • 谢谢艾哈迈德。我想就是这样,但是some 已经指出将负载均衡器(istio-ingress)externalTrafficPolicy 更改为Local 实际上可以解决问题,但是很高兴知道这样的更改是否有任何副作用它会跳过集群功能和“risks potentially imbalanced traffic spreading”。
    • 它确实会对 Kubernetes 产生这样的副作用。然而,在 Knative 的情况下,流量被发送到网关 pod 并且只有少数几个(如果超过 1 个)。如果你没有高 QPS,这会很好。否则,它可能是一个问题。我建议在压力下进行测试/验证。
    • 抱歉更新晚了。在处理少量请求时,此本地似乎工作正常,但是一旦负载增加,它会导致一些超时。直接从 Cloud Run 查看解决方案是理想的选择。
    • 嘿@AhmetB-Google - 我们面临着与 can run 和 anthos 相同的问题。请问,这个问题有什么进展或解决方案吗?
    • 我们面临同样的问题。我们有关于这个@AhmetB-Google 的任何更新吗?谢谢
    猜你喜欢
    • 2011-02-24
    • 2016-03-31
    • 1970-01-01
    • 2014-12-29
    • 2020-12-08
    • 1970-01-01
    • 2010-11-16
    • 2021-10-19
    • 2021-07-07
    相关资源
    最近更新 更多