扩展配置

Envoy 中的每个配置资源在 typed_config 中都有一个类型 URL。此类型对应于一个版本化的模式。类型 URL 唯一标识一个能够解释配置的扩展。 name 字段是可选的,可以用作标识符或扩展配置特定实例的注释。例如,以下过滤器配置片段是允许的

14      - name: front-http-proxy
15        typed_config:
16          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
17          stat_prefix: ingress_http
18          codec_type: AUTO
19          rds:
20            route_config_name: local_route
21            config_source:
22              api_config_source:
23                api_type: GRPC
24                grpc_services:
25                - envoy_grpc:
26                    cluster_name: xds_cluster
27          http_filters:
28          - name: front-router
29            typed_config:
30              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
31              dynamic_stats: true
32  clusters:
33  - type: STRICT_DNS

如果控制平面缺乏扩展的模式定义,则应使用 xds.type.v3.TypedStruct 作为通用容器。其中的类型 URL 随后由客户端用来将内容转换为类型化的配置资源。例如,上面的示例可以写成如下

14      - name: front-http-proxy
15        typed_config:
16          "@type": type.googleapis.com/xds.type.v3.TypedStruct
17          type_url: type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
18          value:
19            stat_prefix: ingress_http
20            codec_type: AUTO
21            rds:
22              route_config_name: local_route
23              config_source:
24                api_config_source:
25                  api_type: GRPC
26                  grpc_services:
27                  - envoy_grpc:
28                      cluster_name: xds_cluster
29            http_filters:
30            - name: front-router
31              typed_config:
32                "@type": type.googleapis.com/xds.type.v3.TypedStruct
33                type_url: type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
34                value:
35                  dynamic_stats: true
36  clusters:
37  - type: STRICT_DNS

发现服务

扩展配置可以通过 xDS 管理服务器 使用 扩展配置发现服务 动态提供。扩展配置中的 name 字段充当资源标识符。

监听器过滤器

对于监听器过滤器,发现服务配置为: 动态监听器过滤器重新配置。动态监听器过滤器配置仅在 TCP 监听器中支持。如果缺少动态配置,连接将被拒绝,直到更新有效的配置。

网络过滤器

对于下游网络过滤器,发现服务配置为: 动态过滤器重新配置。如果缺少动态配置,连接将被拒绝,直到更新有效的配置。当过滤器配置更新时,新的配置将仅应用于新的连接,现有连接将继续使用旧的过滤器配置。

HTTP 过滤器

对于 HTTP 过滤器,HTTP 连接管理器支持 动态过滤器重新配置。如果配置缺少本地 HTTP 响应,则将返回 ‘500’ 状态码。

UDP 会话过滤器

对于 UDP 会话过滤器,UDP 代理支持 动态过滤器重新配置。如果配置缺少 UDP 会话,将被删除。

统计信息

除了对 xDS 订阅支持的 统计信息 之外,还支持以下统计信息,用于监听器过滤器、下游网络过滤器和 HTTP 过滤器,根目录为 extension_config_discovery.<stat_prefix>.<extension_config_name>

  • 对于 TCP 监听器过滤器,<stat_prefix> 的值为 tcp_listener_filter

  • 对于下游网络过滤器,<stat_prefix> 的值为 network_filter

  • 对于上游网络过滤器,<stat_prefix> 的值为 upstream_network_filter

  • 对于下游 HTTP 过滤器,<stat_prefix> 的值为 http_filter

  • 对于上游 HTTP 过滤器,<stat_prefix> 的值为 upstream_http_filter

  • 对于 UDP 会话过滤器,<stat_prefix> 的值为 udp_session_filter

名称

类型

描述

config_reload

计数器

成功配置更新的总数

config_fail

计数器

配置更新失败的总数

config_conflict

计数器

配置更新冲突应用的总数;当新的监听器由于类型 URL 无效而无法重用已订阅的扩展配置时,可能会发生这种情况。

此外,还支持以下统计信息,以指示由于缺少配置而关闭了连接,根目录为 listener.<address>(如果 stat_prefix 非空,则为 listener.<stat_prefix>)。

名称

类型

描述

extension_config_missing

计数器

由于缺少监听器过滤器扩展配置而关闭的连接总数

network_extension_config_missing

计数器

由于缺少网络过滤器扩展配置而关闭的连接总数