123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- syntax = "proto3";
- package envoy.api.v2;
- import "udpa/annotations/migrate.proto";
- import "udpa/annotations/status.proto";
- import "validate/validate.proto";
- option java_package = "io.envoyproxy.envoy.api.v2";
- option java_outer_classname = "ScopedRouteProto";
- option java_multiple_files = true;
- option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
- option (udpa.annotations.file_migrate).move_to_package = "envoy.config.route.v3";
- option (udpa.annotations.file_status).package_version_status = FROZEN;
- // [#protodoc-title: HTTP scoped routing configuration]
- // * Routing :ref:`architecture overview <arch_overview_http_routing>`
- // Specifies a routing scope, which associates a
- // :ref:`Key<envoy_api_msg_ScopedRouteConfiguration.Key>` to a
- // :ref:`envoy_api_msg_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
- // :ref:`scope_key_builder<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scope_key_builder>`
- // assigned to the HttpConnectionManager.
- //
- // For example, with the following configurations (in YAML):
- //
- // HttpConnectionManager config:
- //
- // .. code::
- //
- // ...
- // 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
- // :ref:`scoped_route_configurations_list<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scoped_route_configurations_list>`
- // or obtained dynamically via SRDS):
- //
- // .. code::
- //
- // (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:
- //
- // .. code::
- //
- // 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.
- //
- message ScopedRouteConfiguration {
- // Specifies a key which is matched against the output of the
- // :ref:`scope_key_builder<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.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.
- message Key {
- message Fragment {
- oneof type {
- option (validate.required) = true;
- // A string to match against.
- string string_key = 1;
- }
- }
- // The ordered set of fragments to match against. The order must match the
- // fragments in the corresponding
- // :ref:`scope_key_builder<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scope_key_builder>`.
- repeated Fragment fragments = 1 [(validate.rules).repeated = {min_items: 1}];
- }
- // The name assigned to the routing scope.
- string name = 1 [(validate.rules).string = {min_bytes: 1}];
- // The resource name to use for a :ref:`envoy_api_msg_DiscoveryRequest` to an
- // RDS server to fetch the :ref:`envoy_api_msg_RouteConfiguration` associated
- // with this scope.
- string route_configuration_name = 2 [(validate.rules).string = {min_bytes: 1}];
- // The key to match against.
- Key key = 3 [(validate.rules).message = {required: true}];
- }
|