扩展配置¶
Envoy 中的每一个配置资源,在 typed_config 中都有一个类型 URL。此类型对应于一个带版本的 schema。如果一个类型 URL 能够唯一标识解释性配置的可扩展能力,则此扩展会被选择,而不会去考虑 name 字段。在此情况下,name 字段是可选的,可以被当作一个标识符或可扩展配置特定实例的注解来使用。比如,允许如下所示的的过滤器配置片段:
name: front-http-proxy
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
codec_type: AUTO
rds:
route_config_name: local_route
config_source:
api_config_source:
api_type: GRPC
grpc_services:
envoy_grpc:
cluster_name: xds_cluster
http_filters:
- name: front-router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
dynamic_stats: true
以防控制面缺乏对扩展的 schema 定义能力,udpa.type.v1.TypedStruct 应该被用来作为一个通用容器。容器内的类型 URL 就可以被客户端用来将内容转换为特定类型的配置资源。比如,上述示例也可以写为如下所示的例子:
name: front-http-proxy
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
value:
stat_prefix: ingress_http
codec_type: AUTO
rds:
route_config_name: local_route
config_source:
api_config_source:
api_type: GRPC
grpc_services:
envoy_grpc:
cluster_name: xds_cluster
http_filters:
- name: front-router
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.router.v3Router
发现服务¶
扩展配置可以使用 ExtensionConfiguration 发现服务 的 xDS 管理服务器 来动态提供。扩展配置中的 name 字段充当资源标识符。比如,HTTP 连接管理器支持 HTTP 过滤器的 动态过滤器重配置。
扩展配置发现服务有一个以 <stat_prefix>.extension_config_discovery.<extension_config_name> 为根的 统计 树。除了公共订阅统计,它还提供如下统计:
名称 |
类型 |
描述 |
---|---|---|
config_reload |
Counter |
配置更新成功的总数 |
config_fail |
Counter |
配置更新失败的总数 |