.. _envoy_v3_api_file_envoy/extensions/clusters/reverse_connection/v3/reverse_connection.proto: Reverse connection cluster (proto) ================================== .. _extension_envoy.clusters.reverse_connection: This extension has the qualified name ``envoy.clusters.reverse_connection`` .. note:: This extension is work-in-progress. Functionality is incomplete and it is not intended for production use. This extension has an unknown security posture and should only be used in deployments where both the downstream and upstream are trusted. .. tip:: This extension extends and can be used with the following extension category: - :ref:`envoy.clusters ` This extension must be configured with one of the following type URLs: - :ref:`type.googleapis.com/envoy.extensions.clusters.reverse_connection.v3.ReverseConnectionClusterConfig ` .. _envoy_v3_api_msg_extensions.clusters.reverse_connection.v3.ReverseConnectionClusterConfig: extensions.clusters.reverse_connection.v3.ReverseConnectionClusterConfig ------------------------------------------------------------------------ :repo:`[extensions.clusters.reverse_connection.v3.ReverseConnectionClusterConfig proto] ` Configuration for a cluster of type REVERSE_CONNECTION. .. code-block:: json :force: { "cleanup_interval": {...}, "host_id_format": ... } .. _envoy_v3_api_field_extensions.clusters.reverse_connection.v3.ReverseConnectionClusterConfig.cleanup_interval: cleanup_interval (`Duration `_) Time interval after which Envoy removes unused dynamic hosts created for reverse connections. Hosts that are not referenced by any connection pool are deleted during cleanup. If unset, Envoy uses a default of 60s. .. _envoy_v3_api_field_extensions.clusters.reverse_connection.v3.ReverseConnectionClusterConfig.host_id_format: host_id_format (`string `_, *REQUIRED*) Host identifier format string. This format string is evaluated against the downstream request context to compute the host identifier for selecting the reverse connection endpoint. The format string supports Envoy's standard formatter syntax, including: * ``%REQ(header-name)%``: Extract request header value. * ``%DYNAMIC_METADATA(namespace:key)%``: Extract dynamic metadata value. * ``%CEL(expression)%``: Evaluate CEL expression. * ``%DOWNSTREAM_REMOTE_ADDRESS%``: Downstream connection address. * ``%DOWNSTREAM_LOCAL_ADDRESS%``: Downstream local address. * Plain text and combinations of the above. Examples: * ``%REQ(x-remote-node-id)%``: Use the value of the ``x-remote-node-id`` header. * ``%REQ(host):EXTRACT_FIRST_PART%``: Extract the first part of the Host header before a dot. * ``%CEL(request.headers['x-node-id'] | orValue('default'))%``: Use CEL with fallback. * ``node-%REQ(x-tenant-id)%-%REQ(x-region)%``: Combine multiple values. If the format string evaluates to an empty value, the request will not be routed.