22node :
33 id : upstream-node
44 cluster : upstream-cluster
5+
6+ # Enable reverse connection bootstrap extension
7+ bootstrap_extensions :
8+ - name : envoy.bootstrap.reverse_tunnel.upstream_socket_interface
9+ typed_config :
10+ "@type" : >-
11+ type.googleapis.com/envoy.extensions.bootstrap.reverse_tunnel.upstream_socket_interface.v3.UpstreamReverseConnectionSocketInterface
12+ stat_prefix : " upstream_reverse_connection"
13+
514static_resources :
615 listeners :
7- # Accepts reverse tunnel requests
8- - name : rev_conn_api_listener
9- address :
10- socket_address :
11- address : 0.0.0.0
12- port_value : 9000
13- filter_chains :
14- - filters :
15- - name : envoy.filters.network.reverse_tunnel
16- typed_config :
17- " @type " : type.googleapis.com/envoy.extensions.filters.network.reverse_tunnel.v3.ReverseTunnel
18- ping_interval : 2s
16+ # Accepts reverse tunnel requests
17+ - name : rev_conn_api_listener
18+ address :
19+ socket_address :
20+ address : 0.0.0.0
21+ port_value : 9000
22+ filter_chains :
23+ - filters :
24+ - name : envoy.filters.network.reverse_tunnel
25+ typed_config :
26+ "@type" : >-
27+ type.googleapis.com/envoy.extensions.filters.network.reverse_tunnel.v3.ReverseTunnel
28+ ping_interval : 2s
29+
30+ # Listener that will route the downstream request to the reverse connection cluster
31+ - name : egress_listener
32+ address :
33+ socket_address :
34+ address : 0.0.0.0
35+ port_value : 8085
36+ filter_chains :
37+ - filters :
38+ - name : envoy.http_connection_manager
39+ typed_config :
40+ "@type" : >-
41+ type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
42+ stat_prefix : egress_http
43+ route_config :
44+ virtual_hosts :
45+ - name : backend
46+ domains :
47+ - " *"
48+ routes :
49+ - match :
50+ prefix : " /downstream_service"
51+ route :
52+ cluster : reverse_connection_cluster
53+ http_filters :
54+ - name : envoy.filters.http.router
55+ typed_config :
56+ "@type" : >-
57+ type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
1958
20- # Listener that will route the downstream request to the reverse connection cluster
21- - name : egress_listener
22- address :
23- socket_address :
24- address : 0.0.0.0
25- port_value : 8085
26- filter_chains :
27- - filters :
28- - name : envoy.http_connection_manager
29- typed_config :
30- " @type " : type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
31- stat_prefix : egress_http
32- route_config :
33- virtual_hosts :
34- - name : backend
35- domains :
36- - " *"
37- routes :
38- - match :
39- prefix : " /downstream_service"
40- route :
41- cluster : reverse_connection_cluster
42- http_filters :
43- - name : envoy.filters.http.router
44- typed_config :
45- " @type " : type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
4659 # Cluster used to write requests to cached sockets
4760 clusters :
48- - name : reverse_connection_cluster
49- connect_timeout : 200s
50- lb_policy : CLUSTER_PROVIDED
51- cluster_type :
52- name : envoy.clusters.reverse_connection
53- typed_config :
54- " @type " : type.googleapis.com/envoy.extensions.clusters.reverse_connection.v3.RevConClusterConfig
55- # The following headers are expected in downstream requests
56- # to be sent over reverse connections
57- http_header_names :
58- - x-remote-node-id # Should be set to the node ID of the downstream envoy node, ie., downstream-node
59- - x-dst-cluster-uuid # Should be set to the cluster ID of the downstream envoy node, ie., downstream
60- typed_extension_protocol_options :
61- envoy.extensions.upstreams.http.v3.HttpProtocolOptions :
62- " @type " : type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
63- explicit_http_config :
64- # Right the moment, reverse connections are supported over HTTP/2 only
65- http2_protocol_options : {}
61+ - name : reverse_connection_cluster
62+ connect_timeout : 200s
63+ lb_policy : CLUSTER_PROVIDED
64+ cluster_type :
65+ name : envoy.clusters.reverse_connection
66+ typed_config :
67+ "@type" : >-
68+ type.googleapis.com/envoy.extensions.clusters.reverse_connection.v3.RevConClusterConfig
69+ # The following headers are expected in downstream requests
70+ # to be sent over reverse connections
71+ http_header_names :
72+ - x-remote-node-id # Should be set to downstream-node
73+ - x-dst-cluster-uuid # Should be set to downstream
74+ typed_extension_protocol_options :
75+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions :
76+ "@type" : >-
77+ type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
78+ explicit_http_config :
79+ # Right the moment, reverse connections are supported over HTTP/2 only
80+ http2_protocol_options : {}
81+
6682admin :
6783 access_log_path : " /dev/stdout"
6884 address :
6985 socket_address :
7086 address : 0.0.0.0
7187 port_value : 8888
88+
7289layered_runtime :
7390 layers :
7491 - name : layer
7592 static_layer :
7693 re2.max_program_size.error_level : 1000
7794 envoy.reloadable_features.reverse_conn_force_local_reply : true
78- # Enable reverse connection bootstrap extension
79- bootstrap_extensions :
80- - name : envoy.bootstrap.reverse_tunnel.upstream_socket_interface
81- typed_config :
82- " @type " : type.googleapis.com/envoy.extensions.bootstrap.reverse_tunnel.upstream_socket_interface.v3.UpstreamReverseConnectionSocketInterface
83- stat_prefix : " upstream_reverse_connection"
0 commit comments