使用 EnvoyFilter 实现数据平面可扩展性

您可以使用 EnvoyFilter API 扩展 Cloud Service Mesh 中的数据平面功能,而使用其他 Istio API 则无法实现这些功能。借助 EnvoyFilter API,您可以自定义从应用于工作负载的其他政策生成的 Envoy 配置,例如向 HTTP 过滤条件链添加过滤条件。

重要注意事项

  • 请注意,API 表面与内部实现细节相关联,因此在使用此功能时必须格外小心,因为配置不正确可能会导致网格不稳定。只有在其他 Istio API 不符合您的需求时,才使用 EnvoyFilter API。
  • EnvoyFilter API 受特定限制,即哪些字段和扩展程序可用于可靠性和支持性目的。如需查看 EnvoyFilter API 中支持的功能的 完整列表,请参阅 使用 Istio API 支持的功能(托管式控制平面)
  • Google 提供的支持范围仅限于将用户提供的配置传播到具有 Envoy 边车的工作负载,而不包括使用每个扩展程序 API 指定的配置的正确性。

支持的 API 字段

EnvoyFilter API 仅在 TRAFFIC_DIRECTOR 控制平面实现中受支持,并且仅提供有限 支持,如下所示:

  • targetRefs:不支持
  • configPatches[].applyTo:仅支持 HTTP_FILTER
  • configPatches[].patch.operation:仅在使用路由过滤条件时支持 INSERT_FIRSTINSERT_BEFORE
  • configPatches[].patch.value.type_url:请参阅支持的扩展程序
  • configPatches[].patch.filterClass:不支持
  • configPatches[].match.proxy:不支持
  • configPatches[].match.routeConfiguration:不支持
  • configPatches[].match.cluster:不支持
  • 以下字段仅支持 INSERT_BEFORE 操作:
    • configPatches[].match.listener:仅支持 filter
    • configPatches[].match.listener.filter.name:仅支持 envoy.filters.network.http_connection_manager
    • configPatches[].match.listener.filter.subFilter.name:仅支持 envoy.filters.http.router

支持的扩展程序

以下是支持的扩展程序列表,以及它们在各种 发布渠道中支持的 API 字段。 您可以在 Envoy 官方文档中找到 API 定义及其语义。

type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit

字段 快速 常规 稳定
stat_prefix
status
token_bucket
filter_enabled
filter_enforced
response_headers_to_add
request_headers_to_add_when_not_enforced
local_rate_limit_per_downstream_connection
enable_x_ratelimit_headers

type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb

字段 快速 常规 稳定
(无字段)

type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor

字段 快速 常规 稳定
compressor_library
choose_first
response_direction_config.common_config.min_content_length
response_direction_config.common_config.content_type