• 网关路由
  • KubeSphere 版本 : v3.4.1 使用项目网关 查看日至 日至中 无法获取客户端真实IP

KubeSphere 版本 : v3.4.1 使用项目网关 查看日至,日至中,无法获取客户端真实IP,这个能解决吗

而且后面的应用也拿不到客户端真实IP

    8 天 后

    网关 配置选项 中添加 compute-full-forwarded-for: ‘true’

    forwarded-for-header: X-Forwarded-For

      angelo-she

      非常感谢,现在我网关显示ip是正确了。但是pod确拿到node IP!

      方便贴一下网关的yaml配置吗?

        1 个月 后

        网关使用nodeport 这样配置也拿不到

        11 天 后

        参考网站:https://kubesphere.io/zh/blogs/how-to-get-real-ip-in-pod/

        我发现将 集群网关(或者项目网关)副本个数设置成集群个数,并在容器中设置勾选同步主机时区,副本需要设置反亲和性,保证在每个后端节点上都有 Ingress Controller,最后将 网关的 svc 的 externalTrafficPolicy 设置为 Local 模式,而 我们的部署应用服务 Service 可以不必设置为 Local 模式。ingress 上也不用配置其他参数,就可以在集群网关日志中获取到 真实的ip

        通过这种配置,我发现之前不能用的白名单功能,也能使用了

        应用路由配置

        白名单配置

        从上面的日志中可以看到 我两个不同的主机访问这个域名地址,返回码 不一样,一个200 ,一个403,因为我在测试中将上面配置的ip 也拒绝在白名单之外,所以有的访问被拦截,有的正常

        经过测试,发现:只要将域名解析到master节点的ip,然后将网关pods调度设置到master节点就行,网关pods 个数不需要一定要满足集群节点个数,最好是将个数设置成master的个数,因为master的个数一般不会变,大多数都是3个节点,如果master 节点有污点,工作负载中可能需要配置容忍度

        (以集群网关为例)在工作负载中,选择 kubesphere-router-kubesphere-system 网关pods 调度只需要添加设置就行:

        nodeSelector: 
          node-role.kubernetes.io/master: ''

        因为我master 节点的污点如下图,所以不需要在配置容忍的

        如果有其他污点,需要添加如下配置

        # 下面的配置根据具体情况添加 tolerations: - key: “node-role.kubernetes.io/master” operator: “Exists” # 操作符"Exists"表示只要有这个键的污点即可容忍,不论值是什么 effect: “NoSchedule” # 效应"NoSchedule"意味着Pod可以被调度到带有此污点的节点上

        9 个月 后

        chengjun 这个问题解决了吗? 你集群网关用的是NodePort模式还是LoadBalancer模式?