应用服务网格

sidecar代理配置

2025-08-13 07:02:19

sidecar注入pod之后会代理业务容器进出的流量,从而实现丰富的流量治理、可观测等能力;sidecar本身作为一个代理服务器支持灵活的策略配置,包括代理的资源消耗限制、生命周期管理、流量拦截策略、外部访问策略等。

sidecar代理配置生效范围及应用

sidecar代理配置支持不同的生效范围,包括全局、命名空间、工作负载以及pod级,优先级依次升高;ASM服务网格当前支持全局和命名空间级别的代理配置。全局代理配置将在全局生效,在没有其他配置的情况下,所有注入的sidecar都将采用这个配置;命名空间的代理配置将在指定的命名空间生效,该命名空间下注入的sidecar,在没有指定pod自定义配置的情况下将全部采用该命名空间代理配置;您可以通过给pod打注解实现pod级别的代理配置。

sidecar代理配置具体操作

sidecar管理->sidecar代理配置可以看到全局、命名空间、工作负载及pod级别代理配置,如下图所示:

配置项说明如下:

配置项

说明

istio代理资源

sidecar代理容器运行时最小需要使用的CPU和内存资源以及最大能申请到的CPU和内存资源

istio-init容器资源

初始化容器运行时最小需要使用的CPU和内存资源以及最大能申请到的CPU和内存资源

istio-proxy线程数

设置每个 sidecar 代理中 Istio 代理使用的线程数。

拦截对外访问的地址范围

拦截对这些地址的outbound访问

不拦截对外访问的地址范围

不拦截对这部分地址的outbound访问

设置端口使入流量经过sidecar代理

拦截对这些端口的inbound访问

设置端口使出流量经过sidecar代理

拦截对这些端口的outbound访问

设置端口使入流量免于经过sidecar代理

不拦截对这些端口的inbound访问

设置端口使出流量免于经过sidecar代理

不拦截对这些端口的outbound访问

启用DNS代理功能

启用DNS代理功能后,sidecar将拦截DNS解析请求,如果sidecar本地有DNS结果缓存,则直接返回结果;否则sidecar会将DNS请求转发出去

Sidecar优雅终止

启用sidecar优雅终止后,sidecar 容器在完成所有出站和入站流量处理后才终止。

外部访问策略

定义了sidecar访问外部服务的策略,有两个选项,配置为REGISTRY_ONLY时,sidecar只会访问网格内已注册的服务,拒绝访问外部服务;配置为ALLOW_ANY时,不管服务有没有注册到网格内,sidecar都可以访问。您可以通过将外部服务注册为ServiceEntry,在REGISTRY_ONLY模式下也可以访问到这些服务。

入站流量拦截策略

定义了sidecar入站流量拦截策略,默认为重定向策略,该策略会使sidecar代理的应用程序收到的请求的源IP为Sidecar代理容器的IP地址,无发看到真正客户端的原始IP。透明代理策略,该策略会保留请求的源地址ip和端口。

Sidecar优雅启动

启用sidecar优雅启动后,Pod内的其它容器会被阻塞启动,直到sidecar成功启动。

sidecar代理终止等待时长

服务下线之后由于服务注册信息同步延迟以及部分存量请求仍在处理中等因素影响,不能直接停止服务,sidecar作为中间的代理也不能立即停止服务,否则可能造成部分请求失败;该配置项定义了sidecar容器在收到退出信号后继续等待的时长,默认为5秒,您可以根据自己业务的需求调整该配置。

sidecar代理生命周期

支持以json形式配置sidecar代理的生命周期,主要包括两个配置能力:

postStart:sidecar容器启动后执行的动作

preStop:sidecar代理容器停止前执行的动作

例如下面的配置定义了sidecar容器启动后会等待pilot agent启动;sidecar容器停止前会等待10秒

{

  "postStart": {

    "exec": {

      "command": [

        "pilot-agent",

        "wait"

      ]

    }

  },

  "preStop": {

    "exec": {

      "command": [

        "/bin/sh",

        "-c",

        "sleep 10"

      ]

    }

  }

}

 

sidecar日志级别

设置sidecar代理容器的日志级别

Sidecar代理启用CoreDump

启用CoreDump,会在sidecar代理崩溃时启用Core dump核心转储

 

对于pod级的sidecar代理配置,ASM服务网格兼容istio自带的注解方式实现sidecar代理配置,注解说明如下表:

注解

说明

proxy.istio.io/config

覆盖sidecar代理配置

sidecar.istio.io/agentLogLevel

指定pilot-agent的日志级别

sidecar.istio.io/controlPlaneAuthPolicy

指定sidecar和控制面连接的认证方式,NONE表示无认证,MUTUAL_TLS表示采用双向TLS认证

sidecar.istio.io/discoveryAddress

指定sidecar xDS连接地址

sidecar.istio.io/extraStatTags

sidecar遥测数据中额外提取的标签

sidecar.istio.io/inject

是否注入sidecar

sidecar.istio.io/interceptionMode

定义sidecar拦截流量的模式,REDIRECT 或者 TPROXY

sidecar.istio.io/logLevel

sidecar代理的日志级别

sidecar.istio.io/proxyCPU

sidecar请求的CPU

sidecar.istio.io/proxyCPULimit

sidecar CPU限制

sidecar.istio.io/proxyMemory

sidecar请求的内存

sidecar.istio.io/proxyMemoryLimit

sidecar内存限制

traffic.sidecar.istio.io/excludeInboundPorts

不拦截入流量方向的端口

traffic.sidecar.istio.io/excludeOutboundPorts

不拦截出流量方向的端口

traffic.sidecar.istio.io/includeOutboundIPRanges

拦截出流量方向的ip段

traffic.sidecar.istio.io/excludeOutboundIPRanges

不拦截出流量方向的ip段

traffic.sidecar.istio.io/includeInboundPorts

拦截入流量方向的端口

traffic.sidecar.istio.io/includeOutboundPorts

拦截出流量方向的端口


UtxCd7as5TSw