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

最后更新于 2024/11/27