HTTP scoped routing configuration¶
- 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 (identified by its resource name).
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.
{
  "name": "...",
  "route_configuration_name": "...",
  "key": "{...}"
}
- name
- (string, REQUIRED) The name assigned to the routing scope. 
- route_configuration_name
- (string, REQUIRED) 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. 
- 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
- (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.