ClientTrafficPolicy
是一种用于配置 Envoy Proxy 与下游客户端之间行为的 API,管理员可以通过它来设置各种客户端连接相关的参数。
这个 API 允许系统管理员配置 Envoy Proxy 如何与下游客户端进行交互。它通常与 BackendTrafficPolicy
搭配使用,分别管理与下游客户端和上游服务之间的连接行为。
下面是 Envoy Gateway 中客户端策略的示例配置。
TCP 保活
定义一个 ClientTrafficPolicy
资源,为名为 eg
的 Gateway 配置 TCP 保活策略,设置空闲时间为 20 分钟,发送保持活动探测的间隔为 60 秒,最多探测 3 次。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: enable-tcp-keepalive-policy
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
tcpKeepalive:
idleTime: 20m
interval: 60s
probes: 3
启用代理协议
定义了一个 ClientTrafficPolicy
资源,为名为 eg
的 Gateway 启用代理协议,以便在客户端与服务之间传递原始 IP 地址信息。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: enable-proxy-protocol-policy
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
enableProxyProtocol: true
客户端 IP 识别
定义一个 ClientTrafficPolicy
资源,为名为 eg
的 Gateway 配置客户端 IP 识别策略,通过 X-Forwarded-For
头部信任最多 2 个跳数,以正确识别客户端的真实 IP 地址。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: http-client-ip-detection
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
clientIPDetection:
xForwardedFor:
numTrustedHops: 2
请求超时时间
定义一个 ClientTrafficPolicy
资源,为名为 eg
的 Gateway 设置 HTTP 请求接收超时时间为 2 秒。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: client-timeout
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
timeout:
http:
requestReceivedTimeout: 2s
空闲超时时间
定义一个 ClientTrafficPolicy
资源,为名为 eg
的 Gateway 设置 HTTP 空闲超时时间为 5 秒。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: client-timeout
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
timeout:
http:
idleTimeout: 5s
每个连接的缓冲区限制
定义一个 ClientTrafficPolicy
资源,为名为 eg
的 Gateway 设置每个连接的缓冲区限制为 1024 字节。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: client-timeout
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
connection:
bufferLimit: 1024