使用 EnvoyFilter 实现数据平面可扩展性
您可以使用 EnvoyFilter API 扩展 Cloud Service Mesh 中的数据平面功能,而使用其他 Istio API 则无法实现这些功能。借助
EnvoyFilter API,您可以自定义从应用于工作负载的其他政策生成的 Envoy 配置,例如向 HTTP 过滤条件链添加过滤条件。
重要注意事项
- 请注意,API 表面与内部实现细节相关联,因此在使用此功能时必须格外小心,因为配置不正确可能会导致网格不稳定。只有在其他 Istio API 不符合您的需求时,才使用
EnvoyFilterAPI。 EnvoyFilterAPI 受特定限制,即哪些字段和扩展程序可用于可靠性和支持性目的。如需查看EnvoyFilterAPI 中支持的功能的 完整列表,请参阅 使用 Istio API 支持的功能(托管式控制平面)。- Google 提供的支持范围仅限于将用户提供的配置传播到具有 Envoy 边车的工作负载,而不包括使用每个扩展程序 API 指定的配置的正确性。
支持的 API 字段
EnvoyFilter API 仅在 TRAFFIC_DIRECTOR 控制平面实现中受支持,并且仅提供有限 支持,如下所示:
targetRefs:不支持configPatches[].applyTo:仅支持HTTP_FILTERconfigPatches[].patch.operation:仅在使用路由过滤条件时支持INSERT_FIRST和INSERT_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 |
|||