这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

xDS API中的RDS

xDS API中的RDS

1 - xDS API中的RDS概述

xDS API中的RDS

RDS API定义在 api/envoy/api/v2/rds.proto:

service RouteDiscoveryService {
  rpc StreamRoutes(stream DiscoveryRequest) returns (stream DiscoveryResponse) {
  }

  rpc DeltaRoutes(stream DeltaDiscoveryRequest) returns (stream DeltaDiscoveryResponse) {
  }

  rpc FetchRoutes(DiscoveryRequest) returns (DiscoveryResponse) {
  }
}

2 - xDS API中的Route API

Envoy的Route配置参考手册

备注:内容来自 https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/rds.proto

Route配置

配置详细信息实际的源头是来自xDS API 中 Linsenter 的 proto 定义文件,地址如下:

https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/rds.proto#L44

Listerner配置的JSON格式如下所示:

{
  "name": "...",
  "virtual_hosts": [],
  "internal_only_headers": [],
  "response_headers_to_add": [],
  "response_headers_to_remove": [],
  "request_headers_to_add": [],
  "request_headers_to_remove": [],
  "validate_clusters": "{...}"
}

具体字段的说明:

字段 格式 说明
name string 路由配置的名称。 例如,它可能与 config.filter.network.http_connection_manager.v2.Rds中的 route_config_name 匹配。
virtual_hosts route.VirtualHost 组成路由表的一组虚拟主机(virtual host)。
internal_only_headers string 可选地指定 HTTP header 列表,连接管理器将仅视为内部的。如果在外部请求中找到它们,则会在过滤器调用之前清除它们。 有关更多信息,请参阅 x-envoy-internal
response_headers_to_add core.HeaderValueOption 指定HTTP header列表,以添加到连接管理器编码的每个响应的。 在此级别指定的 header 将应用于来自任何封闭 route.VirtualHostroute.RouteAction 的header之后。 有关更多信息(包括header值语法的详细信息),请参阅有关自定义请求header的文档。
response_headers_to_remove string 指定应从连接管理器编码的每个响应中删除的HTTP header 列表。
request_headers_to_add core.HeaderValueOption 指定应添加到HTTP连接管理器路由的每个请求的HTTP header 列表。 在此级别指定的 header 将应用于来自任何封闭route.VirtualHostroute.RouteAction 的标头之后。 有关更多信息(包括 header 值语法的详细信息),请参阅有关自定义请求 header 的文档。
request_headers_to_remove string 指定应从HTTP连接管理器路由的每个请求中删除的HTTP header 列表。
validate_clusters BoolValue 一个可选的布尔值,指定路由表引用的集群是否将由集群管理器验证。如果设置为true且路由引用的群集不存在,则不会加载路由表。如果设置为false并且路由引用的集群不存在,则路由表将加载,如果在运行时选择了路由,路由器过滤器将返回404。如果通过route_config选项静态定义路由表,则此设置默认为true。如果通过rds选项动态加载路由表,则此设置默认为false。 在某些情况下,用户可能会覆盖默认行为(例如,将CDS与静态路由表一起使用时)。