文档首页/ 应用服务网格 ASM/ 常见问题/ 流量治理/ 服务网格如何支持自定义网段或端口拦截规则?
更新时间:2024-01-24 GMT+08:00

服务网格如何支持自定义网段或端口拦截规则?

操作场景

某些场景下,用户希望能够指定拦截的IP网段,只有IP网段内的请求会被代理拦截;某些场景下,需要配置拦截规则仅针对特定端口的请求生效。以下将介绍两种拦截网段的配置方式。

负载级别配置拦截IP网段

通过配置业务deployment文件,可以在负载级别配置IP网段拦截:

执行kubectl edit deploy –n user_namespace user_deployment

1. 在deployment.spec.template.metadata.annotations中配置IP网段拦截traffic.sidecar.istio.io/includeOutboundIPRanges:

2. 在deployment.spec.template.metadata.annotations中配置IP网段不拦截traffic.sidecar.istio.io/excludeOutboundIPRanges:

注意:上述操作会导致业务容器滚动升级。

负载级别指定端口配置出入流量拦截

通过修改业务deployment文件,可以在负载级别配置端口上的出入流量拦截规则:

执行kubectl edit deploy –n user_namespace user_deployment

1. 在deployment.spec.template.metadata.annotations中配置入流量指定端口不拦截traffic.sidecar.istio.io/excludeInboundPorts:

2. 在deployment.spec.template.metadata.annotations中配置入流量指定端口拦截traffic.sidecar.istio.io/includeInboundPorts:

3. 在deployment.spec.template.metadata.annotations中配置出流量指定端口不拦截traffic.sidecar.istio.io/excludeOutboundPorts:

4. 在deployment.spec.template.metadata.annotations中配置出流量指定端口拦截traffic.sidecar.istio.io/includeOutboundPorts:

注意:上述操作完成后会导致业务容器滚动升级。

验证方式

由于流量拦截配置最终会在容器内iptables中生效,执行下述指令查看配置是否生效:

  1. 登录到配置流量拦截策略工作负载所在节点,docker ps找到对应的pause容器,查看容器id;
  2. 查看容器进程docker inspect <CONTAINER_ID> | grep –i pid;
  3. 进入对应进程namespace:nsenter –t <PID> -n bash;
  4. 查询iptables:iptables –t nat –L –n –v,检查配置的端口、网段拦截策略是否生效;