traefik - 在 k3s 上使用 Traefik 时如何获取客户端的真实 IP 地址?
问题描述
我浏览了许多博客文章和 SO 问题以及 k3s 文档,但仍然无法获得客户端的真实 IP 地址,而不是内部集群 IP 地址。
我使用 Traefik 1.8 安装了标准的 k3s。如几个 github 问题所示,我已将所有服务设置为使用 Clusterip 并设置 externalTrafficPolicy: Local for my Traefik and apache services per this: https://github.com/k3s-io /k3s/issues/1652
奇怪的是,Traefik 似乎传递了任何像 x-forwarded-for 这样的标头,因为如果我手动将带有我的 ip 地址的 x-forwarded-for 添加到我的浏览器请求中,apache 日志中的结果将我的 ip 作为以及用逗号分隔的内部集群 ip。
当流量进入应该注入 IP 地址的集群时,是否有一些东西在 Traefik 实例之前被击中?
解决方案
看来有很多事情会导致这个问题。就我而言,这是更常见的问题之一。我只需要修补 k3s traefik 清单即可拥有 hostNetwork: true。
kubectl patch deployment traefik --patch '{"spec":{"template":{"spec":{"hostNetwork":true}}}}'
需要注意的是,不建议手动修改这个 manifest,因为它是由 helm 管理的。因此,如果 helm 进程再次运行或重新安装或更新 k3s,它将恢复,您将不得不再次运行此补丁。您必须为 traefik 修改 k3s helm 图表或实施您自己的图表来代替 k3s 以使此更改生效。
推荐阅读
- c# - 从模块将 MenuItems 添加到 Shell
- mysql - SQL左连接两次
- reactjs - 在 React 中单击时如何路由照片的详细信息页面?
- mysql - 无法在linux中重新安装mysql服务器
- ios - 在导航到另一个屏幕时继续录制音频
- c - 将大块二进制转换为C中的文本
- javascript - 在同一行中获取 Bootstrap Table 列标题和过滤器控件
- python-cryptography - 在 Apple Silicon M1 Mac 上安装 Cryptography
- reactjs - React-如何重置表单文本区域
- apache-kafka - python3.6中如何将kafka主题的所有分区分配给消费者?