async-grpc-xds 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/fixtures/async/grpc/test_interface.rb +79 -0
  4. data/fixtures/async/grpc/test_message.rb +56 -0
  5. data/lib/async/grpc/xds/ads_stream.rb +70 -0
  6. data/lib/async/grpc/xds/client.rb +255 -0
  7. data/lib/async/grpc/xds/context.rb +201 -0
  8. data/lib/async/grpc/xds/control_plane.rb +143 -0
  9. data/lib/async/grpc/xds/discovery_client.rb +356 -0
  10. data/lib/async/grpc/xds/health_checker.rb +88 -0
  11. data/lib/async/grpc/xds/load_balancer.rb +196 -0
  12. data/lib/async/grpc/xds/resource_builder.rb +138 -0
  13. data/lib/async/grpc/xds/resource_cache.rb +55 -0
  14. data/lib/async/grpc/xds/resources.rb +270 -0
  15. data/lib/async/grpc/xds/server.rb +34 -0
  16. data/lib/async/grpc/xds/service.rb +117 -0
  17. data/lib/async/grpc/xds/version.rb +12 -0
  18. data/lib/async/grpc/xds.rb +42 -0
  19. data/lib/envoy/annotations/deprecation_pb.rb +19 -0
  20. data/lib/envoy/config/cluster/v3/circuit_breaker_pb.rb +31 -0
  21. data/lib/envoy/config/cluster/v3/cluster_pb.rb +80 -0
  22. data/lib/envoy/config/cluster/v3/filter_pb.rb +28 -0
  23. data/lib/envoy/config/cluster/v3/outlier_detection_pb.rb +29 -0
  24. data/lib/envoy/config/core/v3/address_pb.rb +38 -0
  25. data/lib/envoy/config/core/v3/backoff_pb.rb +27 -0
  26. data/lib/envoy/config/core/v3/base_pb.rb +68 -0
  27. data/lib/envoy/config/core/v3/cel_pb.rb +24 -0
  28. data/lib/envoy/config/core/v3/config_source_pb.rb +42 -0
  29. data/lib/envoy/config/core/v3/event_service_config_pb.rb +27 -0
  30. data/lib/envoy/config/core/v3/extension_pb.rb +26 -0
  31. data/lib/envoy/config/core/v3/grpc_method_list_pb.rb +27 -0
  32. data/lib/envoy/config/core/v3/grpc_service_pb.rb +45 -0
  33. data/lib/envoy/config/core/v3/health_check_pb.rb +47 -0
  34. data/lib/envoy/config/core/v3/http_service_pb.rb +27 -0
  35. data/lib/envoy/config/core/v3/http_uri_pb.rb +27 -0
  36. data/lib/envoy/config/core/v3/protocol_pb.rb +51 -0
  37. data/lib/envoy/config/core/v3/proxy_protocol_pb.rb +31 -0
  38. data/lib/envoy/config/core/v3/resolver_pb.rb +27 -0
  39. data/lib/envoy/config/core/v3/socket_cmsg_headers_pb.rb +25 -0
  40. data/lib/envoy/config/core/v3/socket_option_pb.rb +31 -0
  41. data/lib/envoy/config/core/v3/substitution_format_string_pb.rb +30 -0
  42. data/lib/envoy/config/core/v3/udp_socket_config_pb.rb +26 -0
  43. data/lib/envoy/config/endpoint/v3/endpoint_components_pb.rb +40 -0
  44. data/lib/envoy/config/endpoint/v3/endpoint_pb.rb +32 -0
  45. data/lib/envoy/config/endpoint/v3/load_report_pb.rb +36 -0
  46. data/lib/envoy/service/discovery/v3/ads_pb.rb +26 -0
  47. data/lib/envoy/service/discovery/v3/aggregated_discovery_service.rb +64 -0
  48. data/lib/envoy/service/discovery/v3/discovery_pb.rb +42 -0
  49. data/lib/envoy/type/matcher/v3/address_pb.rb +25 -0
  50. data/lib/envoy/type/matcher/v3/filter_state_pb.rb +27 -0
  51. data/lib/envoy/type/matcher/v3/http_inputs_pb.rb +29 -0
  52. data/lib/envoy/type/matcher/v3/metadata_pb.rb +28 -0
  53. data/lib/envoy/type/matcher/v3/node_pb.rb +27 -0
  54. data/lib/envoy/type/matcher/v3/number_pb.rb +27 -0
  55. data/lib/envoy/type/matcher/v3/path_pb.rb +27 -0
  56. data/lib/envoy/type/matcher/v3/regex_pb.rb +30 -0
  57. data/lib/envoy/type/matcher/v3/status_code_input_pb.rb +25 -0
  58. data/lib/envoy/type/matcher/v3/string_pb.rb +29 -0
  59. data/lib/envoy/type/matcher/v3/struct_pb.rb +28 -0
  60. data/lib/envoy/type/matcher/v3/value_pb.rb +31 -0
  61. data/lib/envoy/type/metadata/v3/metadata_pb.rb +32 -0
  62. data/lib/envoy/type/v3/hash_policy_pb.rb +26 -0
  63. data/lib/envoy/type/v3/http_pb.rb +22 -0
  64. data/lib/envoy/type/v3/http_status_pb.rb +25 -0
  65. data/lib/envoy/type/v3/percent_pb.rb +26 -0
  66. data/lib/envoy/type/v3/range_pb.rb +25 -0
  67. data/lib/envoy/type/v3/ratelimit_strategy_pb.rb +28 -0
  68. data/lib/envoy/type/v3/ratelimit_unit_pb.rb +22 -0
  69. data/lib/envoy/type/v3/semantic_version_pb.rb +23 -0
  70. data/lib/envoy/type/v3/token_bucket_pb.rb +26 -0
  71. data/lib/envoy.rb +83 -0
  72. data/lib/google/protobuf/any_pb.rb +18 -0
  73. data/lib/google/protobuf/duration_pb.rb +18 -0
  74. data/lib/google/protobuf/empty_pb.rb +18 -0
  75. data/lib/google/protobuf/struct_pb.rb +21 -0
  76. data/lib/google/protobuf/timestamp_pb.rb +18 -0
  77. data/lib/google/protobuf/wrappers_pb.rb +26 -0
  78. data/lib/google/rpc/status_pb.rb +20 -0
  79. data/lib/udpa/annotations/migrate_pb.rb +22 -0
  80. data/lib/udpa/annotations/security_pb.rb +23 -0
  81. data/lib/udpa/annotations/sensitive_pb.rb +19 -0
  82. data/lib/udpa/annotations/status_pb.rb +21 -0
  83. data/lib/udpa/annotations/versioning_pb.rb +20 -0
  84. data/lib/validate/validate_pb.rb +43 -0
  85. data/lib/xds/annotations/v3/status_pb.rb +26 -0
  86. data/lib/xds/core/v3/authority_pb.rb +23 -0
  87. data/lib/xds/core/v3/cidr_pb.rb +24 -0
  88. data/lib/xds/core/v3/collection_entry_pb.rb +26 -0
  89. data/lib/xds/core/v3/context_params_pb.rb +22 -0
  90. data/lib/xds/core/v3/extension_pb.rb +23 -0
  91. data/lib/xds/core/v3/resource_locator_pb.rb +26 -0
  92. data/lib/xds/core/v3/resource_name_pb.rb +24 -0
  93. data/lib/xds/core/v3/resource_pb.rb +24 -0
  94. data/lib/xds/type/matcher/v3/domain_pb.rb +27 -0
  95. data/lib/xds/type/matcher/v3/http_inputs_pb.rb +22 -0
  96. data/lib/xds/type/matcher/v3/ip_pb.rb +28 -0
  97. data/lib/xds/type/matcher/v3/matcher_pb.rb +34 -0
  98. data/lib/xds/type/matcher/v3/range_pb.rb +31 -0
  99. data/lib/xds/type/matcher/v3/regex_pb.rb +25 -0
  100. data/lib/xds/type/matcher/v3/string_pb.rb +27 -0
  101. data/license.md +21 -0
  102. data/plan.md +156 -0
  103. data/proto/envoy/annotations/deprecation.proto +34 -0
  104. data/proto/envoy/annotations/resource.proto +19 -0
  105. data/proto/envoy/config/README.md +3 -0
  106. data/proto/envoy/config/cluster/v3/BUILD +18 -0
  107. data/proto/envoy/config/cluster/v3/circuit_breaker.proto +121 -0
  108. data/proto/envoy/config/cluster/v3/cluster.proto +1407 -0
  109. data/proto/envoy/config/cluster/v3/filter.proto +40 -0
  110. data/proto/envoy/config/cluster/v3/outlier_detection.proto +180 -0
  111. data/proto/envoy/config/core/v3/BUILD +16 -0
  112. data/proto/envoy/config/core/v3/address.proto +214 -0
  113. data/proto/envoy/config/core/v3/backoff.proto +37 -0
  114. data/proto/envoy/config/core/v3/base.proto +662 -0
  115. data/proto/envoy/config/core/v3/cel.proto +63 -0
  116. data/proto/envoy/config/core/v3/config_source.proto +283 -0
  117. data/proto/envoy/config/core/v3/event_service_config.proto +29 -0
  118. data/proto/envoy/config/core/v3/extension.proto +32 -0
  119. data/proto/envoy/config/core/v3/grpc_method_list.proto +33 -0
  120. data/proto/envoy/config/core/v3/grpc_service.proto +355 -0
  121. data/proto/envoy/config/core/v3/health_check.proto +443 -0
  122. data/proto/envoy/config/core/v3/http_service.proto +35 -0
  123. data/proto/envoy/config/core/v3/http_uri.proto +58 -0
  124. data/proto/envoy/config/core/v3/protocol.proto +807 -0
  125. data/proto/envoy/config/core/v3/proxy_protocol.proto +114 -0
  126. data/proto/envoy/config/core/v3/resolver.proto +36 -0
  127. data/proto/envoy/config/core/v3/socket_cmsg_headers.proto +28 -0
  128. data/proto/envoy/config/core/v3/socket_option.proto +108 -0
  129. data/proto/envoy/config/core/v3/substitution_format_string.proto +136 -0
  130. data/proto/envoy/config/core/v3/udp_socket_config.proto +32 -0
  131. data/proto/envoy/config/endpoint/v3/BUILD +16 -0
  132. data/proto/envoy/config/endpoint/v3/endpoint.proto +137 -0
  133. data/proto/envoy/config/endpoint/v3/endpoint_components.proto +229 -0
  134. data/proto/envoy/config/endpoint/v3/load_report.proto +220 -0
  135. data/proto/envoy/config/listener/v3/BUILD +18 -0
  136. data/proto/envoy/config/listener/v3/api_listener.proto +34 -0
  137. data/proto/envoy/config/listener/v3/listener.proto +455 -0
  138. data/proto/envoy/config/listener/v3/listener_components.proto +353 -0
  139. data/proto/envoy/config/listener/v3/quic_config.proto +108 -0
  140. data/proto/envoy/config/listener/v3/udp_listener_config.proto +52 -0
  141. data/proto/envoy/config/route/v3/BUILD +19 -0
  142. data/proto/envoy/config/route/v3/route.proto +172 -0
  143. data/proto/envoy/config/route/v3/route_components.proto +2918 -0
  144. data/proto/envoy/config/route/v3/scoped_route.proto +133 -0
  145. data/proto/envoy/extensions/transport_sockets/tls/v3/BUILD +14 -0
  146. data/proto/envoy/extensions/transport_sockets/tls/v3/cert.proto +12 -0
  147. data/proto/envoy/extensions/transport_sockets/tls/v3/common.proto +597 -0
  148. data/proto/envoy/extensions/transport_sockets/tls/v3/secret.proto +61 -0
  149. data/proto/envoy/extensions/transport_sockets/tls/v3/tls.proto +366 -0
  150. data/proto/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.proto +67 -0
  151. data/proto/envoy/service/README.md +3 -0
  152. data/proto/envoy/service/discovery/v3/BUILD +13 -0
  153. data/proto/envoy/service/discovery/v3/ads.proto +44 -0
  154. data/proto/envoy/service/discovery/v3/discovery.proto +443 -0
  155. data/proto/envoy/type/BUILD +9 -0
  156. data/proto/envoy/type/hash_policy.proto +28 -0
  157. data/proto/envoy/type/http.proto +24 -0
  158. data/proto/envoy/type/http_status.proto +140 -0
  159. data/proto/envoy/type/matcher/v3/address.proto +22 -0
  160. data/proto/envoy/type/matcher/v3/filter_state.proto +33 -0
  161. data/proto/envoy/type/matcher/v3/http_inputs.proto +71 -0
  162. data/proto/envoy/type/matcher/v3/metadata.proto +110 -0
  163. data/proto/envoy/type/matcher/v3/node.proto +29 -0
  164. data/proto/envoy/type/matcher/v3/number.proto +33 -0
  165. data/proto/envoy/type/matcher/v3/path.proto +31 -0
  166. data/proto/envoy/type/matcher/v3/regex.proto +97 -0
  167. data/proto/envoy/type/matcher/v3/status_code_input.proto +23 -0
  168. data/proto/envoy/type/matcher/v3/string.proto +94 -0
  169. data/proto/envoy/type/matcher/v3/struct.proto +91 -0
  170. data/proto/envoy/type/matcher/v3/value.proto +80 -0
  171. data/proto/envoy/type/metadata/v3/metadata.proto +117 -0
  172. data/proto/envoy/type/percent.proto +52 -0
  173. data/proto/envoy/type/range.proto +43 -0
  174. data/proto/envoy/type/semantic_version.proto +24 -0
  175. data/proto/envoy/type/token_bucket.proto +36 -0
  176. data/proto/envoy/type/v3/BUILD +12 -0
  177. data/proto/envoy/type/v3/hash_policy.proto +43 -0
  178. data/proto/envoy/type/v3/http.proto +24 -0
  179. data/proto/envoy/type/v3/http_status.proto +199 -0
  180. data/proto/envoy/type/v3/percent.proto +57 -0
  181. data/proto/envoy/type/v3/range.proto +50 -0
  182. data/proto/envoy/type/v3/ratelimit_strategy.proto +79 -0
  183. data/proto/envoy/type/v3/ratelimit_unit.proto +37 -0
  184. data/proto/envoy/type/v3/semantic_version.proto +27 -0
  185. data/proto/envoy/type/v3/token_bucket.proto +39 -0
  186. data/proto/google/protobuf/any.proto +162 -0
  187. data/proto/google/protobuf/duration.proto +115 -0
  188. data/proto/google/protobuf/empty.proto +51 -0
  189. data/proto/google/protobuf/struct.proto +95 -0
  190. data/proto/google/protobuf/timestamp.proto +145 -0
  191. data/proto/google/protobuf/wrappers.proto +157 -0
  192. data/proto/google/rpc/status.proto +47 -0
  193. data/proto/readme.md +70 -0
  194. data/proto/udpa/annotations/migrate.proto +49 -0
  195. data/proto/udpa/annotations/security.proto +31 -0
  196. data/proto/udpa/annotations/sensitive.proto +14 -0
  197. data/proto/udpa/annotations/status.proto +34 -0
  198. data/proto/udpa/annotations/versioning.proto +17 -0
  199. data/proto/validate/validate.proto +862 -0
  200. data/proto/xds/annotations/v3/migrate.proto +46 -0
  201. data/proto/xds/annotations/v3/security.proto +30 -0
  202. data/proto/xds/annotations/v3/sensitive.proto +16 -0
  203. data/proto/xds/annotations/v3/status.proto +59 -0
  204. data/proto/xds/annotations/v3/versioning.proto +20 -0
  205. data/proto/xds/core/v3/authority.proto +22 -0
  206. data/proto/xds/core/v3/cidr.proto +25 -0
  207. data/proto/xds/core/v3/collection_entry.proto +55 -0
  208. data/proto/xds/core/v3/context_params.proto +23 -0
  209. data/proto/xds/core/v3/extension.proto +26 -0
  210. data/proto/xds/core/v3/resource.proto +29 -0
  211. data/proto/xds/core/v3/resource_locator.proto +118 -0
  212. data/proto/xds/core/v3/resource_name.proto +42 -0
  213. data/proto/xds/type/matcher/v3/cel.proto +37 -0
  214. data/proto/xds/type/matcher/v3/domain.proto +46 -0
  215. data/proto/xds/type/matcher/v3/http_inputs.proto +23 -0
  216. data/proto/xds/type/matcher/v3/ip.proto +53 -0
  217. data/proto/xds/type/matcher/v3/matcher.proto +144 -0
  218. data/proto/xds/type/matcher/v3/range.proto +69 -0
  219. data/proto/xds/type/matcher/v3/regex.proto +46 -0
  220. data/proto/xds/type/matcher/v3/string.proto +71 -0
  221. data/proto/xds/type/v3/cel.proto +77 -0
  222. data/proto/xds/type/v3/range.proto +40 -0
  223. data/proto/xds/type/v3/typed_struct.proto +44 -0
  224. data/readme.md +37 -0
  225. data/releases.md +5 -0
  226. data/xds/Dockerfile.backend +24 -0
  227. data/xds/Dockerfile.control-plane +22 -0
  228. data/xds/backend_server.rb +68 -0
  229. data/xds/docker-compose.yaml +89 -0
  230. data/xds/go.mod +22 -0
  231. data/xds/go.sum +82 -0
  232. data/xds/readme.md +122 -0
  233. data/xds/test/async/grpc/xds/client.rb +294 -0
  234. data/xds/test/async/grpc/xds/control_plane.rb +94 -0
  235. data/xds/test_server.go +355 -0
  236. data/xds/update_protos.sh +123 -0
  237. data.tar.gz.sig +0 -0
  238. metadata +386 -0
  239. metadata.gz.sig +2 -0
@@ -0,0 +1,40 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.cluster.v3;
4
+
5
+ import "envoy/config/core/v3/config_source.proto";
6
+
7
+ import "google/protobuf/any.proto";
8
+
9
+ import "udpa/annotations/status.proto";
10
+ import "udpa/annotations/versioning.proto";
11
+ import "validate/validate.proto";
12
+
13
+ option java_package = "io.envoyproxy.envoy.config.cluster.v3";
14
+ option java_outer_classname = "FilterProto";
15
+ option java_multiple_files = true;
16
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3";
17
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
18
+
19
+ // [#protodoc-title: Upstream network filters]
20
+ // Upstream network filters apply to the connections to the upstream cluster hosts.
21
+
22
+ message Filter {
23
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.cluster.Filter";
24
+
25
+ // The name of the filter configuration.
26
+ string name = 1 [(validate.rules).string = {min_len: 1}];
27
+
28
+ // Filter specific configuration which depends on the filter being
29
+ // instantiated. See the supported filters for further documentation.
30
+ // Note that Envoy's :ref:`downstream network
31
+ // filters <config_network_filters>` are not valid upstream network filters.
32
+ // Only one of typed_config or config_discovery can be used.
33
+ google.protobuf.Any typed_config = 2;
34
+
35
+ // Configuration source specifier for an extension configuration discovery
36
+ // service. In case of a failure and without the default configuration, the
37
+ // listener closes the connections.
38
+ // Only one of typed_config or config_discovery can be used.
39
+ core.v3.ExtensionConfigSource config_discovery = 3;
40
+ }
@@ -0,0 +1,180 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.cluster.v3;
4
+
5
+ import "envoy/config/core/v3/extension.proto";
6
+
7
+ import "google/protobuf/duration.proto";
8
+ import "google/protobuf/wrappers.proto";
9
+
10
+ import "udpa/annotations/status.proto";
11
+ import "udpa/annotations/versioning.proto";
12
+ import "validate/validate.proto";
13
+
14
+ option java_package = "io.envoyproxy.envoy.config.cluster.v3";
15
+ option java_outer_classname = "OutlierDetectionProto";
16
+ option java_multiple_files = true;
17
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3";
18
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
19
+
20
+ // [#protodoc-title: Outlier detection]
21
+
22
+ // See the :ref:`architecture overview <arch_overview_outlier_detection>` for
23
+ // more information on outlier detection.
24
+ // [#next-free-field: 26]
25
+ message OutlierDetection {
26
+ option (udpa.annotations.versioning).previous_message_type =
27
+ "envoy.api.v2.cluster.OutlierDetection";
28
+
29
+ // The number of consecutive server-side error responses (for HTTP traffic,
30
+ // 5xx responses; for TCP traffic, connection failures; for Redis, failure to
31
+ // respond PONG; etc.) before a consecutive 5xx ejection occurs. Defaults to 5.
32
+ google.protobuf.UInt32Value consecutive_5xx = 1;
33
+
34
+ // The time interval between ejection analysis sweeps. This can result in
35
+ // both new ejections as well as hosts being returned to service. Defaults
36
+ // to 10000ms or 10s.
37
+ google.protobuf.Duration interval = 2 [(validate.rules).duration = {gt {}}];
38
+
39
+ // The base time that a host is ejected for. The real time is equal to the
40
+ // base time multiplied by the number of times the host has been ejected and is
41
+ // capped by :ref:`max_ejection_time<envoy_v3_api_field_config.cluster.v3.OutlierDetection.max_ejection_time>`.
42
+ // Defaults to 30000ms or 30s.
43
+ google.protobuf.Duration base_ejection_time = 3 [(validate.rules).duration = {gt {}}];
44
+
45
+ // The maximum % of an upstream cluster that can be ejected due to outlier detection. Defaults to 10% .
46
+ // Will eject at least one host regardless of the value if :ref:`always_eject_one_host<envoy_v3_api_field_config.cluster.v3.OutlierDetection.always_eject_one_host>` is enabled.
47
+ google.protobuf.UInt32Value max_ejection_percent = 4 [(validate.rules).uint32 = {lte: 100}];
48
+
49
+ // The % chance that a host will be actually ejected when an outlier status
50
+ // is detected through consecutive 5xx. This setting can be used to disable
51
+ // ejection or to ramp it up slowly. Defaults to 100.
52
+ google.protobuf.UInt32Value enforcing_consecutive_5xx = 5 [(validate.rules).uint32 = {lte: 100}];
53
+
54
+ // The % chance that a host will be actually ejected when an outlier status
55
+ // is detected through success rate statistics. This setting can be used to
56
+ // disable ejection or to ramp it up slowly. Defaults to 100.
57
+ google.protobuf.UInt32Value enforcing_success_rate = 6 [(validate.rules).uint32 = {lte: 100}];
58
+
59
+ // The number of hosts in a cluster that must have enough request volume to
60
+ // detect success rate outliers. If the number of hosts is less than this
61
+ // setting, outlier detection via success rate statistics is not performed
62
+ // for any host in the cluster. Defaults to 5.
63
+ google.protobuf.UInt32Value success_rate_minimum_hosts = 7;
64
+
65
+ // The minimum number of total requests that must be collected in one
66
+ // interval (as defined by the interval duration above) to include this host
67
+ // in success rate based outlier detection. If the volume is lower than this
68
+ // setting, outlier detection via success rate statistics is not performed
69
+ // for that host. Defaults to 100.
70
+ google.protobuf.UInt32Value success_rate_request_volume = 8;
71
+
72
+ // This factor is used to determine the ejection threshold for success rate
73
+ // outlier ejection. The ejection threshold is the difference between the
74
+ // mean success rate, and the product of this factor and the standard
75
+ // deviation of the mean success rate: mean - (stdev *
76
+ // success_rate_stdev_factor). This factor is divided by a thousand to get a
77
+ // double. That is, if the desired factor is 1.9, the runtime value should
78
+ // be 1900. Defaults to 1900.
79
+ google.protobuf.UInt32Value success_rate_stdev_factor = 9;
80
+
81
+ // The number of consecutive gateway failures (502, 503, 504 status codes)
82
+ // before a consecutive gateway failure ejection occurs. Defaults to 5.
83
+ google.protobuf.UInt32Value consecutive_gateway_failure = 10;
84
+
85
+ // The % chance that a host will be actually ejected when an outlier status
86
+ // is detected through consecutive gateway failures. This setting can be
87
+ // used to disable ejection or to ramp it up slowly. Defaults to 0.
88
+ google.protobuf.UInt32Value enforcing_consecutive_gateway_failure = 11
89
+ [(validate.rules).uint32 = {lte: 100}];
90
+
91
+ // Determines whether to distinguish local origin failures from external errors. If set to true
92
+ // the following configuration parameters are taken into account:
93
+ // :ref:`consecutive_local_origin_failure<envoy_v3_api_field_config.cluster.v3.OutlierDetection.consecutive_local_origin_failure>`,
94
+ // :ref:`enforcing_consecutive_local_origin_failure<envoy_v3_api_field_config.cluster.v3.OutlierDetection.enforcing_consecutive_local_origin_failure>`
95
+ // and
96
+ // :ref:`enforcing_local_origin_success_rate<envoy_v3_api_field_config.cluster.v3.OutlierDetection.enforcing_local_origin_success_rate>`.
97
+ // Defaults to false.
98
+ bool split_external_local_origin_errors = 12;
99
+
100
+ // The number of consecutive locally originated failures before ejection
101
+ // occurs. Defaults to 5. Parameter takes effect only when
102
+ // :ref:`split_external_local_origin_errors<envoy_v3_api_field_config.cluster.v3.OutlierDetection.split_external_local_origin_errors>`
103
+ // is set to true.
104
+ google.protobuf.UInt32Value consecutive_local_origin_failure = 13;
105
+
106
+ // The % chance that a host will be actually ejected when an outlier status
107
+ // is detected through consecutive locally originated failures. This setting can be
108
+ // used to disable ejection or to ramp it up slowly. Defaults to 100.
109
+ // Parameter takes effect only when
110
+ // :ref:`split_external_local_origin_errors<envoy_v3_api_field_config.cluster.v3.OutlierDetection.split_external_local_origin_errors>`
111
+ // is set to true.
112
+ google.protobuf.UInt32Value enforcing_consecutive_local_origin_failure = 14
113
+ [(validate.rules).uint32 = {lte: 100}];
114
+
115
+ // The % chance that a host will be actually ejected when an outlier status
116
+ // is detected through success rate statistics for locally originated errors.
117
+ // This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
118
+ // Parameter takes effect only when
119
+ // :ref:`split_external_local_origin_errors<envoy_v3_api_field_config.cluster.v3.OutlierDetection.split_external_local_origin_errors>`
120
+ // is set to true.
121
+ google.protobuf.UInt32Value enforcing_local_origin_success_rate = 15
122
+ [(validate.rules).uint32 = {lte: 100}];
123
+
124
+ // The failure percentage to use when determining failure percentage-based outlier detection. If
125
+ // the failure percentage of a given host is greater than or equal to this value, it will be
126
+ // ejected. Defaults to 85.
127
+ google.protobuf.UInt32Value failure_percentage_threshold = 16
128
+ [(validate.rules).uint32 = {lte: 100}];
129
+
130
+ // The % chance that a host will be actually ejected when an outlier status is detected through
131
+ // failure percentage statistics. This setting can be used to disable ejection or to ramp it up
132
+ // slowly. Defaults to 0.
133
+ //
134
+ // [#next-major-version: setting this without setting failure_percentage_threshold should be
135
+ // invalid in v4.]
136
+ google.protobuf.UInt32Value enforcing_failure_percentage = 17
137
+ [(validate.rules).uint32 = {lte: 100}];
138
+
139
+ // The % chance that a host will be actually ejected when an outlier status is detected through
140
+ // local-origin failure percentage statistics. This setting can be used to disable ejection or to
141
+ // ramp it up slowly. Defaults to 0.
142
+ google.protobuf.UInt32Value enforcing_failure_percentage_local_origin = 18
143
+ [(validate.rules).uint32 = {lte: 100}];
144
+
145
+ // The minimum number of hosts in a cluster in order to perform failure percentage-based ejection.
146
+ // If the total number of hosts in the cluster is less than this value, failure percentage-based
147
+ // ejection will not be performed. Defaults to 5.
148
+ google.protobuf.UInt32Value failure_percentage_minimum_hosts = 19;
149
+
150
+ // The minimum number of total requests that must be collected in one interval (as defined by the
151
+ // interval duration above) to perform failure percentage-based ejection for this host. If the
152
+ // volume is lower than this setting, failure percentage-based ejection will not be performed for
153
+ // this host. Defaults to 50.
154
+ google.protobuf.UInt32Value failure_percentage_request_volume = 20;
155
+
156
+ // The maximum time that a host is ejected for. See :ref:`base_ejection_time<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>`
157
+ // for more information. If not specified, the default value (300000ms or 300s) or
158
+ // :ref:`base_ejection_time<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>` value is applied, whatever is larger.
159
+ google.protobuf.Duration max_ejection_time = 21 [(validate.rules).duration = {gt {}}];
160
+
161
+ // The maximum amount of jitter to add to the ejection time, in order to prevent
162
+ // a 'thundering herd' effect where all proxies try to reconnect to host at the same time.
163
+ // See :ref:`max_ejection_time_jitter<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>`
164
+ // Defaults to 0s.
165
+ google.protobuf.Duration max_ejection_time_jitter = 22;
166
+
167
+ // If active health checking is enabled and a host is ejected by outlier detection, a successful active health check
168
+ // unejects the host by default and considers it as healthy. Unejection also clears all the outlier detection counters.
169
+ // To change this default behavior set this config to ``false`` where active health checking will not uneject the host.
170
+ // Defaults to true.
171
+ google.protobuf.BoolValue successful_active_health_check_uneject_host = 23;
172
+
173
+ // Set of host's passive monitors.
174
+ // [#not-implemented-hide:]
175
+ repeated core.v3.TypedExtensionConfig monitors = 24;
176
+
177
+ // If enabled, at least one host is ejected regardless of the value of :ref:`max_ejection_percent<envoy_v3_api_field_config.cluster.v3.OutlierDetection.max_ejection_percent>`.
178
+ // Defaults to false.
179
+ google.protobuf.BoolValue always_eject_one_host = 25;
180
+ }
@@ -0,0 +1,16 @@
1
+ # DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
2
+
3
+ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
4
+
5
+ licenses(["notice"]) # Apache 2
6
+
7
+ api_proto_package(
8
+ deps = [
9
+ "//envoy/annotations:pkg",
10
+ "//envoy/type/matcher/v3:pkg",
11
+ "//envoy/type/v3:pkg",
12
+ "@com_github_cncf_xds//udpa/annotations:pkg",
13
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
14
+ "@com_github_cncf_xds//xds/core/v3:pkg",
15
+ ],
16
+ )
@@ -0,0 +1,214 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "envoy/config/core/v3/extension.proto";
6
+ import "envoy/config/core/v3/socket_option.proto";
7
+
8
+ import "google/protobuf/wrappers.proto";
9
+
10
+ import "envoy/annotations/deprecation.proto";
11
+ import "udpa/annotations/status.proto";
12
+ import "udpa/annotations/versioning.proto";
13
+ import "validate/validate.proto";
14
+
15
+ option java_package = "io.envoyproxy.envoy.config.core.v3";
16
+ option java_outer_classname = "AddressProto";
17
+ option java_multiple_files = true;
18
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
19
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
20
+
21
+ // [#protodoc-title: Network addresses]
22
+
23
+ message Pipe {
24
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.Pipe";
25
+
26
+ // Unix Domain Socket path. On Linux, paths starting with '@' will use the
27
+ // abstract namespace. The starting '@' is replaced by a null byte by Envoy.
28
+ // Paths starting with '@' will result in an error in environments other than
29
+ // Linux.
30
+ string path = 1 [(validate.rules).string = {min_len: 1}];
31
+
32
+ // The mode for the Pipe. Not applicable for abstract sockets.
33
+ uint32 mode = 2 [(validate.rules).uint32 = {lte: 511}];
34
+ }
35
+
36
+ // The address represents an envoy internal listener.
37
+ // [#comment: TODO(asraa): When address available, remove workaround from test/server/server_fuzz_test.cc:30.]
38
+ message EnvoyInternalAddress {
39
+ oneof address_name_specifier {
40
+ option (validate.required) = true;
41
+
42
+ // Specifies the :ref:`name <envoy_v3_api_field_config.listener.v3.Listener.name>` of the
43
+ // internal listener.
44
+ string server_listener_name = 1;
45
+ }
46
+
47
+ // Specifies an endpoint identifier to distinguish between multiple endpoints for the same internal listener in a
48
+ // single upstream pool. Only used in the upstream addresses for tracking changes to individual endpoints. This, for
49
+ // example, may be set to the final destination IP for the target internal listener.
50
+ string endpoint_id = 2;
51
+ }
52
+
53
+ // [#next-free-field: 8]
54
+ message SocketAddress {
55
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.SocketAddress";
56
+
57
+ enum Protocol {
58
+ TCP = 0;
59
+ UDP = 1;
60
+ }
61
+
62
+ Protocol protocol = 1 [(validate.rules).enum = {defined_only: true}];
63
+
64
+ // The address for this socket. :ref:`Listeners <config_listeners>` will bind
65
+ // to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
66
+ // to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
67
+ // It is possible to distinguish a Listener address via the prefix/suffix matching
68
+ // in :ref:`FilterChainMatch <envoy_v3_api_msg_config.listener.v3.FilterChainMatch>`.] When used
69
+ // within an upstream :ref:`BindConfig <envoy_v3_api_msg_config.core.v3.BindConfig>`, the address
70
+ // controls the source address of outbound connections. For :ref:`clusters
71
+ // <envoy_v3_api_msg_config.cluster.v3.Cluster>`, the cluster type determines whether the
72
+ // address must be an IP (``STATIC`` or ``EDS`` clusters) or a hostname resolved by DNS
73
+ // (``STRICT_DNS`` or ``LOGICAL_DNS`` clusters). Address resolution can be customized
74
+ // via :ref:`resolver_name <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`.
75
+ string address = 2 [(validate.rules).string = {min_len: 1}];
76
+
77
+ oneof port_specifier {
78
+ option (validate.required) = true;
79
+
80
+ uint32 port_value = 3 [(validate.rules).uint32 = {lte: 65535}];
81
+
82
+ // This is only valid if :ref:`resolver_name
83
+ // <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>` is specified below and the
84
+ // named resolver is capable of named port resolution.
85
+ string named_port = 4;
86
+ }
87
+
88
+ // The name of the custom resolver. This must have been registered with Envoy. If
89
+ // this is empty, a context dependent default applies. If the address is a concrete
90
+ // IP address, no resolution will occur. If address is a hostname this
91
+ // should be set for resolution other than DNS. Specifying a custom resolver with
92
+ // ``STRICT_DNS`` or ``LOGICAL_DNS`` will generate an error at runtime.
93
+ string resolver_name = 5;
94
+
95
+ // When binding to an IPv6 address above, this enables `IPv4 compatibility
96
+ // <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will
97
+ // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
98
+ // IPv6 space as ``::FFFF:<IPv4-address>``.
99
+ bool ipv4_compat = 6;
100
+
101
+ // Filepath that specifies the Linux network namespace this socket will be created in (see ``man 7
102
+ // network_namespaces``). If this field is set, Envoy will create the socket in the specified
103
+ // network namespace.
104
+ //
105
+ // .. note::
106
+ // Setting this parameter requires Envoy to run with the ``CAP_NET_ADMIN`` capability.
107
+ //
108
+ // .. attention::
109
+ // Network namespaces are only configurable on Linux. Otherwise, this field has no effect.
110
+ string network_namespace_filepath = 7;
111
+ }
112
+
113
+ message TcpKeepalive {
114
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.TcpKeepalive";
115
+
116
+ // Maximum number of keepalive probes to send without response before deciding
117
+ // the connection is dead. Default is to use the OS level configuration (unless
118
+ // overridden, Linux defaults to 9.) Setting this to ``0`` disables TCP keepalive.
119
+ google.protobuf.UInt32Value keepalive_probes = 1;
120
+
121
+ // The number of seconds a connection needs to be idle before keep-alive probes
122
+ // start being sent. Default is to use the OS level configuration (unless
123
+ // overridden, Linux defaults to 7200s (i.e., 2 hours.) Setting this to ``0`` disables
124
+ // TCP keepalive.
125
+ google.protobuf.UInt32Value keepalive_time = 2;
126
+
127
+ // The number of seconds between keep-alive probes. Default is to use the OS
128
+ // level configuration (unless overridden, Linux defaults to 75s.) Setting this to
129
+ // ``0`` disables TCP keepalive.
130
+ google.protobuf.UInt32Value keepalive_interval = 3;
131
+ }
132
+
133
+ message ExtraSourceAddress {
134
+ // The additional address to bind.
135
+ SocketAddress address = 1 [(validate.rules).message = {required: true}];
136
+
137
+ // Additional socket options that may not be present in Envoy source code or
138
+ // precompiled binaries. If specified, this will override the
139
+ // :ref:`socket_options <envoy_v3_api_field_config.core.v3.BindConfig.socket_options>`
140
+ // in the BindConfig. If specified with no
141
+ // :ref:`socket_options <envoy_v3_api_field_config.core.v3.SocketOptionsOverride.socket_options>`
142
+ // or an empty list of :ref:`socket_options <envoy_v3_api_field_config.core.v3.SocketOptionsOverride.socket_options>`,
143
+ // it means no socket option will apply.
144
+ SocketOptionsOverride socket_options = 2;
145
+ }
146
+
147
+ // [#next-free-field: 7]
148
+ message BindConfig {
149
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.BindConfig";
150
+
151
+ // The address to bind to when creating a socket.
152
+ SocketAddress source_address = 1;
153
+
154
+ // Whether to set the ``IP_FREEBIND`` option when creating the socket. When this
155
+ // flag is set to true, allows the :ref:`source_address
156
+ // <envoy_v3_api_field_config.core.v3.BindConfig.source_address>` to be an IP address
157
+ // that is not configured on the system running Envoy. When this flag is set
158
+ // to false, the option ``IP_FREEBIND`` is disabled on the socket. When this
159
+ // flag is not set (default), the socket is not modified, i.e. the option is
160
+ // neither enabled nor disabled.
161
+ google.protobuf.BoolValue freebind = 2;
162
+
163
+ // Additional socket options that may not be present in Envoy source code or
164
+ // precompiled binaries.
165
+ repeated SocketOption socket_options = 3;
166
+
167
+ // Extra source addresses appended to the address specified in the ``source_address``
168
+ // field. This enables to specify multiple source addresses.
169
+ // The source address selection is determined by :ref:`local_address_selector
170
+ // <envoy_v3_api_field_config.core.v3.BindConfig.local_address_selector>`.
171
+ repeated ExtraSourceAddress extra_source_addresses = 5;
172
+
173
+ // Deprecated by
174
+ // :ref:`extra_source_addresses <envoy_v3_api_field_config.core.v3.BindConfig.extra_source_addresses>`
175
+ repeated SocketAddress additional_source_addresses = 4
176
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
177
+
178
+ // Custom local address selector to override the default (i.e.
179
+ // :ref:`DefaultLocalAddressSelector
180
+ // <envoy_v3_api_msg_config.upstream.local_address_selector.v3.DefaultLocalAddressSelector>`).
181
+ // [#extension-category: envoy.upstream.local_address_selector]
182
+ TypedExtensionConfig local_address_selector = 6;
183
+ }
184
+
185
+ // Addresses specify either a logical or physical address and port, which are
186
+ // used to tell Envoy where to bind/listen, connect to upstream and find
187
+ // management servers.
188
+ message Address {
189
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.Address";
190
+
191
+ oneof address {
192
+ option (validate.required) = true;
193
+
194
+ SocketAddress socket_address = 1;
195
+
196
+ Pipe pipe = 2;
197
+
198
+ // Specifies a user-space address handled by :ref:`internal listeners
199
+ // <envoy_v3_api_field_config.listener.v3.Listener.internal_listener>`.
200
+ EnvoyInternalAddress envoy_internal_address = 3;
201
+ }
202
+ }
203
+
204
+ // CidrRange specifies an IP Address and a prefix length to construct
205
+ // the subnet mask for a `CIDR <https://tools.ietf.org/html/rfc4632>`_ range.
206
+ message CidrRange {
207
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.CidrRange";
208
+
209
+ // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
210
+ string address_prefix = 1 [(validate.rules).string = {min_len: 1}];
211
+
212
+ // Length of prefix, e.g. 0, 32. Defaults to 0 when unset.
213
+ google.protobuf.UInt32Value prefix_len = 2 [(validate.rules).uint32 = {lte: 128}];
214
+ }
@@ -0,0 +1,37 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "google/protobuf/duration.proto";
6
+
7
+ import "udpa/annotations/status.proto";
8
+ import "udpa/annotations/versioning.proto";
9
+ import "validate/validate.proto";
10
+
11
+ option java_package = "io.envoyproxy.envoy.config.core.v3";
12
+ option java_outer_classname = "BackoffProto";
13
+ option java_multiple_files = true;
14
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
15
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
16
+
17
+ // [#protodoc-title: Backoff strategy]
18
+
19
+ // Configuration defining a jittered exponential back off strategy.
20
+ message BackoffStrategy {
21
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.BackoffStrategy";
22
+
23
+ // The base interval to be used for the next back off computation. It should
24
+ // be greater than zero and less than or equal to :ref:`max_interval
25
+ // <envoy_v3_api_field_config.core.v3.BackoffStrategy.max_interval>`.
26
+ google.protobuf.Duration base_interval = 1 [(validate.rules).duration = {
27
+ required: true
28
+ gte {nanos: 1000000}
29
+ }];
30
+
31
+ // Specifies the maximum interval between retries. This parameter is optional,
32
+ // but must be greater than or equal to the :ref:`base_interval
33
+ // <envoy_v3_api_field_config.core.v3.BackoffStrategy.base_interval>` if set. The default
34
+ // is 10 times the :ref:`base_interval
35
+ // <envoy_v3_api_field_config.core.v3.BackoffStrategy.base_interval>`.
36
+ google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {}}];
37
+ }