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,63 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "udpa/annotations/status.proto";
6
+
7
+ option java_package = "io.envoyproxy.envoy.config.core.v3";
8
+ option java_outer_classname = "CelProto";
9
+ option java_multiple_files = true;
10
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
11
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
12
+
13
+ // [#protodoc-title: CEL Expression Configuration]
14
+
15
+ // CEL expression evaluation configuration.
16
+ // These options control the behavior of the Common Expression Language runtime for
17
+ // individual CEL expressions.
18
+ message CelExpressionConfig {
19
+ // Enable string conversion functions for CEL expressions. When enabled, CEL expressions
20
+ // can convert values to strings using the ``string()`` function.
21
+ //
22
+ // .. attention::
23
+ //
24
+ // This option is disabled by default to avoid unbounded memory allocation.
25
+ // CEL evaluation cost is typically bounded by the expression size, but converting
26
+ // arbitrary values (e.g., large messages, lists, or maps) to strings may allocate
27
+ // memory proportional to input data size, which can be unbounded and lead to
28
+ // memory exhaustion.
29
+ bool enable_string_conversion = 1;
30
+
31
+ // Enable string concatenation for CEL expressions. When enabled, CEL expressions
32
+ // can concatenate strings using the ``+`` operator.
33
+ //
34
+ // .. attention::
35
+ //
36
+ // This option is disabled by default to avoid unbounded memory allocation.
37
+ // While CEL normally bounds evaluation by expression size, enabling string
38
+ // concatenation allows building outputs whose size depends on input data,
39
+ // potentially causing large intermediate allocations and memory exhaustion.
40
+ bool enable_string_concat = 2;
41
+
42
+ // Enable string manipulation functions for CEL expressions. When enabled, CEL
43
+ // expressions can use additional string functions:
44
+ //
45
+ // * ``replace(old, new)`` - Replaces all occurrences of ``old`` with ``new``.
46
+ // * ``split(separator)`` - Splits a string into a list of substrings.
47
+ // * ``lowerAscii()`` - Converts ASCII characters to lowercase.
48
+ // * ``upperAscii()`` - Converts ASCII characters to uppercase.
49
+ //
50
+ // .. note::
51
+ //
52
+ // Standard CEL string functions like ``contains()``, ``startsWith()``, and
53
+ // ``endsWith()`` are always available regardless of this setting.
54
+ //
55
+ // .. attention::
56
+ //
57
+ // This option is disabled by default to avoid unbounded memory allocation.
58
+ // Although CEL generally bounds evaluation by expression size, functions such as
59
+ // ``replace``, ``split``, ``lowerAscii()``, and ``upperAscii()`` can allocate memory
60
+ // proportional to input data size. Under adversarial inputs this can lead to
61
+ // unbounded allocations and memory exhaustion.
62
+ bool enable_string_functions = 3;
63
+ }
@@ -0,0 +1,283 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "envoy/config/core/v3/base.proto";
6
+ import "envoy/config/core/v3/extension.proto";
7
+ import "envoy/config/core/v3/grpc_service.proto";
8
+
9
+ import "google/protobuf/any.proto";
10
+ import "google/protobuf/duration.proto";
11
+ import "google/protobuf/wrappers.proto";
12
+
13
+ import "xds/core/v3/authority.proto";
14
+
15
+ import "envoy/annotations/deprecation.proto";
16
+ import "udpa/annotations/status.proto";
17
+ import "udpa/annotations/versioning.proto";
18
+ import "validate/validate.proto";
19
+
20
+ option java_package = "io.envoyproxy.envoy.config.core.v3";
21
+ option java_outer_classname = "ConfigSourceProto";
22
+ option java_multiple_files = true;
23
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
24
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
25
+
26
+ // [#protodoc-title: Configuration sources]
27
+
28
+ // xDS API and non-xDS services version. This is used to describe both resource and transport
29
+ // protocol versions (in distinct configuration fields).
30
+ enum ApiVersion {
31
+ // When not specified, we assume v3; it is the only supported version.
32
+ AUTO = 0;
33
+
34
+ // Use xDS v2 API. This is no longer supported.
35
+ V2 = 1 [deprecated = true, (envoy.annotations.deprecated_at_minor_version_enum) = "3.0"];
36
+
37
+ // Use xDS v3 API.
38
+ V3 = 2;
39
+ }
40
+
41
+ // API configuration source. This identifies the API type and cluster that Envoy
42
+ // will use to fetch an xDS API.
43
+ // [#next-free-field: 10]
44
+ message ApiConfigSource {
45
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.ApiConfigSource";
46
+
47
+ // APIs may be fetched via either REST or gRPC.
48
+ enum ApiType {
49
+ // Ideally this would be 'reserved 0' but one can't reserve the default
50
+ // value. Instead we throw an exception if this is ever used.
51
+ DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE = 0
52
+ [deprecated = true, (envoy.annotations.disallowed_by_default_enum) = true];
53
+
54
+ // REST-JSON v2 API. The `canonical JSON encoding
55
+ // <https://developers.google.com/protocol-buffers/docs/proto3#json>`_ for
56
+ // the v2 protos is used.
57
+ REST = 1;
58
+
59
+ // SotW gRPC service.
60
+ GRPC = 2;
61
+
62
+ // Using the delta xDS gRPC service, i.e. DeltaDiscovery{Request,Response}
63
+ // rather than Discovery{Request,Response}. Rather than sending Envoy the entire state
64
+ // with every update, the xDS server only sends what has changed since the last update.
65
+ DELTA_GRPC = 3;
66
+
67
+ // SotW xDS gRPC with ADS. All resources which resolve to this configuration source will be
68
+ // multiplexed on a single connection to an ADS endpoint.
69
+ // [#not-implemented-hide:]
70
+ AGGREGATED_GRPC = 5;
71
+
72
+ // Delta xDS gRPC with ADS. All resources which resolve to this configuration source will be
73
+ // multiplexed on a single connection to an ADS endpoint.
74
+ // [#not-implemented-hide:]
75
+ AGGREGATED_DELTA_GRPC = 6;
76
+ }
77
+
78
+ // API type (gRPC, REST, delta gRPC)
79
+ ApiType api_type = 1 [(validate.rules).enum = {defined_only: true}];
80
+
81
+ // API version for xDS transport protocol. This describes the xDS gRPC/REST
82
+ // endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.
83
+ ApiVersion transport_api_version = 8 [(validate.rules).enum = {defined_only: true}];
84
+
85
+ // Cluster names should be used only with REST. If > 1
86
+ // cluster is defined, clusters will be cycled through if any kind of failure
87
+ // occurs.
88
+ //
89
+ // .. note::
90
+ //
91
+ // The cluster with name ``cluster_name`` must be statically defined and its
92
+ // type must not be ``EDS``.
93
+ repeated string cluster_names = 2;
94
+
95
+ // Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,
96
+ // services will be cycled through if any kind of failure occurs.
97
+ repeated GrpcService grpc_services = 4;
98
+
99
+ // For REST APIs, the delay between successive polls.
100
+ google.protobuf.Duration refresh_delay = 3;
101
+
102
+ // For REST APIs, the request timeout. If not set, a default value of 1s will be used.
103
+ google.protobuf.Duration request_timeout = 5 [(validate.rules).duration = {gt {}}];
104
+
105
+ // For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
106
+ // rate limited.
107
+ RateLimitSettings rate_limit_settings = 6;
108
+
109
+ // Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
110
+ bool set_node_on_first_message_only = 7;
111
+
112
+ // A list of config validators that will be executed when a new update is
113
+ // received from the ApiConfigSource. Note that each validator handles a
114
+ // specific xDS service type, and only the validators corresponding to the
115
+ // type url (in ``:ref: DiscoveryResponse`` or ``:ref: DeltaDiscoveryResponse``)
116
+ // will be invoked.
117
+ // If the validator returns false or throws an exception, the config will be rejected by
118
+ // the client, and a NACK will be sent.
119
+ // [#extension-category: envoy.config.validators]
120
+ repeated TypedExtensionConfig config_validators = 9;
121
+ }
122
+
123
+ // Aggregated Discovery Service (ADS) options. This is currently empty, but when
124
+ // set in :ref:`ConfigSource <envoy_v3_api_msg_config.core.v3.ConfigSource>` can be used to
125
+ // specify that ADS is to be used.
126
+ message AggregatedConfigSource {
127
+ option (udpa.annotations.versioning).previous_message_type =
128
+ "envoy.api.v2.core.AggregatedConfigSource";
129
+ }
130
+
131
+ // [#not-implemented-hide:]
132
+ // Self-referencing config source options. This is currently empty, but when
133
+ // set in :ref:`ConfigSource <envoy_v3_api_msg_config.core.v3.ConfigSource>` can be used to
134
+ // specify that other data can be obtained from the same server.
135
+ message SelfConfigSource {
136
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.SelfConfigSource";
137
+
138
+ // API version for xDS transport protocol. This describes the xDS gRPC/REST
139
+ // endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.
140
+ ApiVersion transport_api_version = 1 [(validate.rules).enum = {defined_only: true}];
141
+ }
142
+
143
+ // Rate Limit settings to be applied for discovery requests made by Envoy.
144
+ message RateLimitSettings {
145
+ option (udpa.annotations.versioning).previous_message_type =
146
+ "envoy.api.v2.core.RateLimitSettings";
147
+
148
+ // Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a
149
+ // default value of 100 will be used.
150
+ google.protobuf.UInt32Value max_tokens = 1;
151
+
152
+ // Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens
153
+ // per second will be used. The minimal fill rate is once per year. Lower
154
+ // fill rates will be set to once per year.
155
+ google.protobuf.DoubleValue fill_rate = 2 [(validate.rules).double = {gt: 0.0}];
156
+ }
157
+
158
+ // Local filesystem path configuration source.
159
+ message PathConfigSource {
160
+ // Path on the filesystem to source and watch for configuration updates.
161
+ // When sourcing configuration for a :ref:`secret <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.Secret>`,
162
+ // the certificate and key files are also watched for updates.
163
+ //
164
+ // .. note::
165
+ //
166
+ // The path to the source must exist at config load time.
167
+ //
168
+ // .. note::
169
+ //
170
+ // If ``watched_directory`` is *not* configured, Envoy will watch the file path for *moves*.
171
+ // This is because in general only moves are atomic. The same method of swapping files as is
172
+ // demonstrated in the :ref:`runtime documentation <config_runtime_symbolic_link_swap>` can be
173
+ // used here also. If ``watched_directory`` is configured, no watch will be placed directly on
174
+ // this path. Instead, the configured ``watched_directory`` will be used to trigger reloads of
175
+ // this path. This is required in certain deployment scenarios. See below for more information.
176
+ string path = 1 [(validate.rules).string = {min_len: 1}];
177
+
178
+ // If configured, this directory will be watched for *moves*. When an entry in this directory is
179
+ // moved to, the ``path`` will be reloaded. This is required in certain deployment scenarios.
180
+ //
181
+ // Specifically, if trying to load an xDS resource using a
182
+ // `Kubernetes ConfigMap <https://kubernetes.io/docs/concepts/configuration/configmap/>`_, the
183
+ // following configuration might be used:
184
+ // 1. Store xds.yaml inside a ConfigMap.
185
+ // 2. Mount the ConfigMap to ``/config_map/xds``
186
+ // 3. Configure path ``/config_map/xds/xds.yaml``
187
+ // 4. Configure watched directory ``/config_map/xds``
188
+ //
189
+ // The above configuration will ensure that Envoy watches the owning directory for moves which is
190
+ // required due to how Kubernetes manages ConfigMap symbolic links during atomic updates.
191
+ WatchedDirectory watched_directory = 2;
192
+ }
193
+
194
+ // Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
195
+ // <config_cluster_manager>`, :ref:`routes
196
+ // <envoy_v3_api_msg_config.route.v3.RouteConfiguration>`, :ref:`endpoints
197
+ // <arch_overview_service_discovery>` etc. may either be sourced from the
198
+ // filesystem or from an xDS API source. Filesystem configs are watched with
199
+ // inotify for updates.
200
+ // [#next-free-field: 9]
201
+ message ConfigSource {
202
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.ConfigSource";
203
+
204
+ // Authorities that this config source may be used for. An authority specified in a xdstp:// URL
205
+ // is resolved to a ``ConfigSource`` prior to configuration fetch. This field provides the
206
+ // association between authority name and configuration source.
207
+ // [#not-implemented-hide:]
208
+ repeated xds.core.v3.Authority authorities = 7;
209
+
210
+ oneof config_source_specifier {
211
+ option (validate.required) = true;
212
+
213
+ // Deprecated in favor of ``path_config_source``. Use that field instead.
214
+ string path = 1 [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
215
+
216
+ // Local filesystem path configuration source.
217
+ PathConfigSource path_config_source = 8;
218
+
219
+ // API configuration source.
220
+ ApiConfigSource api_config_source = 2;
221
+
222
+ // When set, ADS will be used to fetch resources. The ADS API configuration
223
+ // source in the bootstrap configuration is used.
224
+ AggregatedConfigSource ads = 3;
225
+
226
+ // [#not-implemented-hide:]
227
+ // When set, the client will access the resources from the same server it got the
228
+ // ConfigSource from, although not necessarily from the same stream. This is similar to the
229
+ // :ref:`ads<envoy_v3_api_field.ConfigSource.ads>` field, except that the client may use a
230
+ // different stream to the same server. As a result, this field can be used for things
231
+ // like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)
232
+ // LDS to RDS on the same server without requiring the management server to know its name
233
+ // or required credentials.
234
+ // [#next-major-version: In xDS v3, consider replacing the ads field with this one, since
235
+ // this field can implicitly mean to use the same stream in the case where the ConfigSource
236
+ // is provided via ADS and the specified data can also be obtained via ADS.]
237
+ SelfConfigSource self = 5;
238
+ }
239
+
240
+ // When this timeout is specified, Envoy will wait no longer than the specified time for first
241
+ // config response on this xDS subscription during the :ref:`initialization process
242
+ // <arch_overview_initialization>`. After reaching the timeout, Envoy will move to the next
243
+ // initialization phase, even if the first config is not delivered yet. The timer is activated
244
+ // when the xDS API subscription starts, and is disarmed on first config update or on error. 0
245
+ // means no timeout - Envoy will wait indefinitely for the first xDS config (unless another
246
+ // timeout applies). The default is 15s.
247
+ google.protobuf.Duration initial_fetch_timeout = 4;
248
+
249
+ // API version for xDS resources. This implies the type URLs that the client
250
+ // will request for resources and the resource type that the client will in
251
+ // turn expect to be delivered.
252
+ ApiVersion resource_api_version = 6 [(validate.rules).enum = {defined_only: true}];
253
+ }
254
+
255
+ // Configuration source specifier for a late-bound extension configuration. The
256
+ // parent resource is warmed until all the initial extension configurations are
257
+ // received, unless the flag to apply the default configuration is set.
258
+ // Subsequent extension updates are atomic on a per-worker basis. Once an
259
+ // extension configuration is applied to a request or a connection, it remains
260
+ // constant for the duration of processing. If the initial delivery of the
261
+ // extension configuration fails, due to a timeout for example, the optional
262
+ // default configuration is applied. Without a default configuration, the
263
+ // extension is disabled, until an extension configuration is received. The
264
+ // behavior of a disabled extension depends on the context. For example, a
265
+ // filter chain with a disabled extension filter rejects all incoming streams.
266
+ message ExtensionConfigSource {
267
+ ConfigSource config_source = 1 [(validate.rules).any = {required: true}];
268
+
269
+ // Optional default configuration to use as the initial configuration if
270
+ // there is a failure to receive the initial extension configuration or if
271
+ // ``apply_default_config_without_warming`` flag is set.
272
+ google.protobuf.Any default_config = 2;
273
+
274
+ // Use the default config as the initial configuration without warming and
275
+ // waiting for the first discovery response. Requires the default configuration
276
+ // to be supplied.
277
+ bool apply_default_config_without_warming = 3;
278
+
279
+ // A set of permitted extension type URLs for the type encoded inside of the
280
+ // :ref:`TypedExtensionConfig <envoy_v3_api_msg_config.core.v3.TypedExtensionConfig>`. Extension
281
+ // configuration updates are rejected if they do not match any type URL in the set.
282
+ repeated string type_urls = 4 [(validate.rules).repeated = {min_items: 1}];
283
+ }
@@ -0,0 +1,29 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "envoy/config/core/v3/grpc_service.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 = "EventServiceConfigProto";
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
+ // [#not-implemented-hide:]
18
+ // Configuration of the event reporting service endpoint.
19
+ message EventServiceConfig {
20
+ option (udpa.annotations.versioning).previous_message_type =
21
+ "envoy.api.v2.core.EventServiceConfig";
22
+
23
+ oneof config_source_specifier {
24
+ option (validate.required) = true;
25
+
26
+ // Specifies the gRPC service that hosts the event reporting service.
27
+ GrpcService grpc_service = 1;
28
+ }
29
+ }
@@ -0,0 +1,32 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "google/protobuf/any.proto";
6
+
7
+ import "udpa/annotations/status.proto";
8
+ import "validate/validate.proto";
9
+
10
+ option java_package = "io.envoyproxy.envoy.config.core.v3";
11
+ option java_outer_classname = "ExtensionProto";
12
+ option java_multiple_files = true;
13
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
14
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
15
+
16
+ // [#protodoc-title: Extension configuration]
17
+
18
+ // Message type for extension configuration.
19
+ // [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.].
20
+ message TypedExtensionConfig {
21
+ // The name of an extension. This is not used to select the extension, instead
22
+ // it serves the role of an opaque identifier.
23
+ string name = 1 [(validate.rules).string = {min_len: 1}];
24
+
25
+ // The typed config for the extension. The type URL will be used to identify
26
+ // the extension. In the case that the type URL is ``xds.type.v3.TypedStruct``
27
+ // (or, for historical reasons, ``udpa.type.v1.TypedStruct``), the inner type
28
+ // URL of ``TypedStruct`` will be utilized. See the
29
+ // :ref:`extension configuration overview
30
+ // <config_overview_extension_configuration>` for further details.
31
+ google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}];
32
+ }
@@ -0,0 +1,33 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.core.v3;
4
+
5
+ import "udpa/annotations/status.proto";
6
+ import "udpa/annotations/versioning.proto";
7
+ import "validate/validate.proto";
8
+
9
+ option java_package = "io.envoyproxy.envoy.config.core.v3";
10
+ option java_outer_classname = "GrpcMethodListProto";
11
+ option java_multiple_files = true;
12
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
13
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
14
+
15
+ // [#protodoc-title: gRPC method list]
16
+
17
+ // A list of gRPC methods which can be used as an allowlist, for example.
18
+ message GrpcMethodList {
19
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.GrpcMethodList";
20
+
21
+ message Service {
22
+ option (udpa.annotations.versioning).previous_message_type =
23
+ "envoy.api.v2.core.GrpcMethodList.Service";
24
+
25
+ // The name of the gRPC service.
26
+ string name = 1 [(validate.rules).string = {min_len: 1}];
27
+
28
+ // The names of the gRPC methods in this service.
29
+ repeated string method_names = 2 [(validate.rules).repeated = {min_items: 1}];
30
+ }
31
+
32
+ repeated Service services = 1;
33
+ }