.. _envoy_v3_api_file_contrib/envoy/extensions/filters/network/generic_proxy/v3/route.proto: Generic Proxy Route Configuration (proto) ========================================= .. warning:: This API feature is currently work-in-progress. API features marked as work-in-progress are not considered stable, are not covered by the :ref:`threat model `, are not supported by the security team, and are subject to breaking changes. Do not use this feature without understanding each of the previous points. .. _envoy_v3_api_msg_extensions.filters.network.generic_proxy.v3.VirtualHost: extensions.filters.network.generic_proxy.v3.VirtualHost ------------------------------------------------------- :repo:`[extensions.filters.network.generic_proxy.v3.VirtualHost proto] ` .. code-block:: json :force: { "name": ..., "hosts": [], "routes": {...} } .. _envoy_v3_api_field_extensions.filters.network.generic_proxy.v3.VirtualHost.name: name (`string `_, *REQUIRED*) The name of the virtual host. .. _envoy_v3_api_field_extensions.filters.network.generic_proxy.v3.VirtualHost.hosts: hosts (**repeated** `string `_, *REQUIRED*) A list of hosts that will be matched to this virtual host. Wildcard hosts are supported in the suffix or prefix form. Host search order: 1. Exact names: ``www.foo.com``. 2. Suffix wildcards: ``*.foo.com`` or ``*-bar.foo.com``. 3. Prefix wildcards: ``foo.*`` or ``foo-*``. 4. Special wildcard ``*`` matching any host and will be the default virtual host. .. note:: The wildcard will not match the empty string. e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. The longest wildcards match first. Only a single virtual host in the entire route configuration can match on ``*``. A domain must be unique across all virtual hosts or the config will fail to load. .. _envoy_v3_api_field_extensions.filters.network.generic_proxy.v3.VirtualHost.routes: routes (:ref:`.xds.type.matcher.v3.Matcher `, *REQUIRED*) The match tree to use when resolving route actions for incoming requests. .. _envoy_v3_api_msg_extensions.filters.network.generic_proxy.v3.RouteConfiguration: extensions.filters.network.generic_proxy.v3.RouteConfiguration -------------------------------------------------------------- :repo:`[extensions.filters.network.generic_proxy.v3.RouteConfiguration proto] ` The generic proxy makes use of the xDS matching API for routing configurations. In the below example, we combine a top level tree matcher with a linear matcher to match the incoming requests, and send the matching requests to v1 of the upstream service. .. code-block:: yaml name: example routes: matcher_tree: input: name: request-service typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.generic_proxy.matcher.v3.ServiceMatchInput exact_match_map: map: service_name_0: matcher: matcher_list: matchers: - predicate: and_matcher: predicate: - single_predicate: input: name: request-properties typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.generic_proxy.matcher.v3.PropertyMatchInput property_name: version value_match: exact: v1 - single_predicate: input: name: request-properties typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.generic_proxy.matcher.v3.PropertyMatchInput property_name: user value_match: exact: john on_match: action: name: route typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.generic_proxy.action.v3.routeAction cluster: cluster_0 .. code-block:: json :force: { "name": ..., "routes": {...}, "virtual_hosts": [] } .. _envoy_v3_api_field_extensions.filters.network.generic_proxy.v3.RouteConfiguration.name: name (`string `_, *REQUIRED*) The name of the route configuration. For example, it might match route_config_name in envoy.extensions.filters.network.generic_proxy.v3.Rds. .. _envoy_v3_api_field_extensions.filters.network.generic_proxy.v3.RouteConfiguration.routes: routes (:ref:`.xds.type.matcher.v3.Matcher `) The match tree to use when resolving route actions for incoming requests. If no any virtual host is configured in the ``virtual_hosts`` field or no special wildcard virtual host is configured, the ``routes`` field will be used as the default route table. If both the wildcard virtual host and ``routes`` are configured, the configuration will fail to load. .. _envoy_v3_api_field_extensions.filters.network.generic_proxy.v3.RouteConfiguration.virtual_hosts: virtual_hosts (**repeated** :ref:`extensions.filters.network.generic_proxy.v3.VirtualHost `) An array of virtual hosts that make up the route table.