文档首页/ 云容器引擎 CCE/ 常见问题/ 网络管理/ 网络指导/ 服务加入Istio后,如何获取客户端真实源IP?
更新时间:2024-07-02 GMT+08:00

服务加入Istio后,如何获取客户端真实源IP?

问题现象

服务启用Istio后,访问日志中无法获取到客户端源IP。

解决方案

本文以绑定ELB类型Service的nginx应用为例,详细步骤如下:

  1. ELB侧开启获取客户端IP

    独享型ELB默认开启源地址透传功能,无需手动开启。

    1. 登录弹性负载均衡ELB的管理控制台。
    2. 在管理控制台左上角单击图标,选择区域和项目。
    3. 选择“服务列表 > 网络 > 弹性负载均衡”。
    4. 在“负载均衡器”界面,单击需要操作的负载均衡名称。
    5. 切换到“监听器”页签,单击需要修改的监听器名称右侧的“编辑”按钮。如果存在修改保护,请在监听器基本信息页面中关闭修改保护后重试。
    6. 开启“获取客户端IP”开关。
      图1 开启开关

  2. 更新服务所关联的网关

    1. 登录CCE控制台,单击集群名称进入集群,在左侧选择“服务发现”
    2. 在“服务发现”页面,切换至istio-system命名空间,并更新服务所关联的网关服务

    3. 将istio-system命名空间下自动生成的Service改为节点级别。

  3. 验证获取源IP

    1. 使用kubectl连接集群。
    2. 查看nginx应用日志。
      kubectl logs <pod_name>

      本示例中,nginx应用获取到的源IP如下: