HTTP scoped routing configuration¶
This documentation is for the Envoy v3 API.
As of Envoy v1.18 the v2 API has been removed and is no longer supported.
If you are upgrading from v2 API config you may wish to view the v2 API documentation:
Routing architecture overview
config.route.v3.ScopedRouteConfiguration¶
[config.route.v3.ScopedRouteConfiguration proto]
Specifies a routing scope, which associates a Key to a config.route.v3.RouteConfiguration. The config.route.v3.RouteConfiguration can be obtained dynamically via RDS (route_configuration_name) or specified inline (route_configuration).
The HTTP connection manager builds up a table consisting of these Key to RouteConfiguration mappings, and looks up the RouteConfiguration to use per request according to the algorithm specified in the scope_key_builder assigned to the HttpConnectionManager.
For example, with the following configurations (in YAML):
HttpConnectionManager config:
...
scoped_routes:
name: foo-scoped-routes
scope_key_builder:
fragments:
- header_value_extractor:
name: X-Route-Selector
element_separator: ,
element:
separator: =
key: vip
ScopedRouteConfiguration resources (specified statically via scoped_route_configurations_list or obtained dynamically via SRDS):
(1)
name: route-scope1
route_configuration_name: route-config1
key:
fragments:
- string_key: 172.10.10.20
(2)
name: route-scope2
route_configuration_name: route-config2
key:
fragments:
- string_key: 172.20.20.30
A request from a client such as:
GET / HTTP/1.1
Host: foo.com
X-Route-Selector: vip=172.10.10.20
would result in the routing table defined by the route-config1 RouteConfiguration being assigned to the HTTP request/stream.
{
"on_demand": "...",
"name": "...",
"route_configuration_name": "...",
"route_configuration": "{...}",
"key": "{...}"
}
- on_demand
(bool) Whether the RouteConfiguration should be loaded on demand.
- name
(string, REQUIRED) The name assigned to the routing scope.
- route_configuration_name
(string) The resource name to use for a service.discovery.v3.DiscoveryRequest to an RDS server to fetch the config.route.v3.RouteConfiguration associated with this scope.
- route_configuration
(config.route.v3.RouteConfiguration) The config.route.v3.RouteConfiguration associated with the scope.
- key
(config.route.v3.ScopedRouteConfiguration.Key, REQUIRED) The key to match against.
config.route.v3.ScopedRouteConfiguration.Key¶
[config.route.v3.ScopedRouteConfiguration.Key proto]
Specifies a key which is matched against the output of the scope_key_builder specified in the HttpConnectionManager. The matching is done per HTTP request and is dependent on the order of the fragments contained in the Key.
{
"fragments": []
}
- fragments
(repeated config.route.v3.ScopedRouteConfiguration.Key.Fragment, REQUIRED) The ordered set of fragments to match against. The order must match the fragments in the corresponding scope_key_builder.
config.route.v3.ScopedRouteConfiguration.Key.Fragment¶
[config.route.v3.ScopedRouteConfiguration.Key.Fragment proto]
{
"string_key": "..."
}
- string_key
(string, REQUIRED) A string to match against.