RKE2 v1.35.3+rke2r3如何修改traefik获取用户真实IP

环境信息:
RKE2 版本:
v1.35.3+rke2r3

节点 CPU 架构,操作系统和版本:

集群配置:
3 servers, 3 agents

问题描述:
RKE2集群通过Rancher 2.14.1版本注册安装的下游集群,集群配置选择 Traefik ,部署Deployment后,配置了service以及ingress(http方式80端口),通过外部Nginx+Keepalived 代理集群的ingress(已经配置了 X-Forwarded-For 头传递),业务可以正常访问,但是在POD上获取的是Nginx服务器的IP地址,未获取到用户端真实的IP地址,需要如何修改Traefik 实现获取用户真实IP。
注:之前使用的Rancher 2.7.5 + RKE2 v1.26.3-rke2r1,使用的ingress-nginx是可以获取用户端真实IP地址。

这个应该是 traefik 的配置吧

是的,traefik不太熟悉,所以来论坛请教如何修改 traefik的配置。

RKE2 和 K3s 的设计差不多,你可以试试网上搜索 K3S traefik 上的配置,然后修改 RKE2,应该可以

方法一:使用 kubectl apply 导入(推荐)
这是最直接的方法,和部署普通 Kubernetes 资源一样。

  1. 创建配置文件
    创建一个名为 rke2-traefik-config.yaml 的文件,内容如下:

yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-traefik
namespace: kube-system
spec:
valuesContent: |-
ports:
web:
forwardedHeaders:
trustedIPs:
# 【重要】请将 /0 替换为您外部 Nginx 的实际 IP 地址或网段
# 示例: - “192.168.1.100/32”
- 0.0.0.0/0
additionalArguments:
- “–entryPoints.web.forwardedHeaders.trustedIPs=0.0.0.0/0”
安全提醒:生产环境中请务必将 0.0.0.0/0 替换为您 Nginx 代理服务器的具体 IP,例如 [“192.168.1.100/32”] 或内网网段 [“192.168.1.0/24”]。

  1. 应用配置
    在终端中执行以下命令:

bash
kubectl apply -f rke2-traefik-config.yaml

方法二:在 Rancher UI 中导入 YAML

如果您更习惯使用 Rancher 界面操作:

  1. 登录 Rancher UI,进入您的 RKE2 集群
  2. 在左上角切换命名空间为 kube-system
  3. 点击右上角 导入 YAML 按钮
  4. 将上述 YAML 内容粘贴到编辑器中
  5. 点击 导入

此方法已经在测试环境验证,供大家交流。

1 个赞