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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/fixtures/async/grpc/test_interface.rb +79 -0
- data/fixtures/async/grpc/test_message.rb +56 -0
- data/lib/async/grpc/xds/ads_stream.rb +70 -0
- data/lib/async/grpc/xds/client.rb +255 -0
- data/lib/async/grpc/xds/context.rb +201 -0
- data/lib/async/grpc/xds/control_plane.rb +143 -0
- data/lib/async/grpc/xds/discovery_client.rb +356 -0
- data/lib/async/grpc/xds/health_checker.rb +88 -0
- data/lib/async/grpc/xds/load_balancer.rb +196 -0
- data/lib/async/grpc/xds/resource_builder.rb +138 -0
- data/lib/async/grpc/xds/resource_cache.rb +55 -0
- data/lib/async/grpc/xds/resources.rb +270 -0
- data/lib/async/grpc/xds/server.rb +34 -0
- data/lib/async/grpc/xds/service.rb +117 -0
- data/lib/async/grpc/xds/version.rb +12 -0
- data/lib/async/grpc/xds.rb +42 -0
- data/lib/envoy/annotations/deprecation_pb.rb +19 -0
- data/lib/envoy/config/cluster/v3/circuit_breaker_pb.rb +31 -0
- data/lib/envoy/config/cluster/v3/cluster_pb.rb +80 -0
- data/lib/envoy/config/cluster/v3/filter_pb.rb +28 -0
- data/lib/envoy/config/cluster/v3/outlier_detection_pb.rb +29 -0
- data/lib/envoy/config/core/v3/address_pb.rb +38 -0
- data/lib/envoy/config/core/v3/backoff_pb.rb +27 -0
- data/lib/envoy/config/core/v3/base_pb.rb +68 -0
- data/lib/envoy/config/core/v3/cel_pb.rb +24 -0
- data/lib/envoy/config/core/v3/config_source_pb.rb +42 -0
- data/lib/envoy/config/core/v3/event_service_config_pb.rb +27 -0
- data/lib/envoy/config/core/v3/extension_pb.rb +26 -0
- data/lib/envoy/config/core/v3/grpc_method_list_pb.rb +27 -0
- data/lib/envoy/config/core/v3/grpc_service_pb.rb +45 -0
- data/lib/envoy/config/core/v3/health_check_pb.rb +47 -0
- data/lib/envoy/config/core/v3/http_service_pb.rb +27 -0
- data/lib/envoy/config/core/v3/http_uri_pb.rb +27 -0
- data/lib/envoy/config/core/v3/protocol_pb.rb +51 -0
- data/lib/envoy/config/core/v3/proxy_protocol_pb.rb +31 -0
- data/lib/envoy/config/core/v3/resolver_pb.rb +27 -0
- data/lib/envoy/config/core/v3/socket_cmsg_headers_pb.rb +25 -0
- data/lib/envoy/config/core/v3/socket_option_pb.rb +31 -0
- data/lib/envoy/config/core/v3/substitution_format_string_pb.rb +30 -0
- data/lib/envoy/config/core/v3/udp_socket_config_pb.rb +26 -0
- data/lib/envoy/config/endpoint/v3/endpoint_components_pb.rb +40 -0
- data/lib/envoy/config/endpoint/v3/endpoint_pb.rb +32 -0
- data/lib/envoy/config/endpoint/v3/load_report_pb.rb +36 -0
- data/lib/envoy/service/discovery/v3/ads_pb.rb +26 -0
- data/lib/envoy/service/discovery/v3/aggregated_discovery_service.rb +64 -0
- data/lib/envoy/service/discovery/v3/discovery_pb.rb +42 -0
- data/lib/envoy/type/matcher/v3/address_pb.rb +25 -0
- data/lib/envoy/type/matcher/v3/filter_state_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/http_inputs_pb.rb +29 -0
- data/lib/envoy/type/matcher/v3/metadata_pb.rb +28 -0
- data/lib/envoy/type/matcher/v3/node_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/number_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/path_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/regex_pb.rb +30 -0
- data/lib/envoy/type/matcher/v3/status_code_input_pb.rb +25 -0
- data/lib/envoy/type/matcher/v3/string_pb.rb +29 -0
- data/lib/envoy/type/matcher/v3/struct_pb.rb +28 -0
- data/lib/envoy/type/matcher/v3/value_pb.rb +31 -0
- data/lib/envoy/type/metadata/v3/metadata_pb.rb +32 -0
- data/lib/envoy/type/v3/hash_policy_pb.rb +26 -0
- data/lib/envoy/type/v3/http_pb.rb +22 -0
- data/lib/envoy/type/v3/http_status_pb.rb +25 -0
- data/lib/envoy/type/v3/percent_pb.rb +26 -0
- data/lib/envoy/type/v3/range_pb.rb +25 -0
- data/lib/envoy/type/v3/ratelimit_strategy_pb.rb +28 -0
- data/lib/envoy/type/v3/ratelimit_unit_pb.rb +22 -0
- data/lib/envoy/type/v3/semantic_version_pb.rb +23 -0
- data/lib/envoy/type/v3/token_bucket_pb.rb +26 -0
- data/lib/envoy.rb +83 -0
- data/lib/google/protobuf/any_pb.rb +18 -0
- data/lib/google/protobuf/duration_pb.rb +18 -0
- data/lib/google/protobuf/empty_pb.rb +18 -0
- data/lib/google/protobuf/struct_pb.rb +21 -0
- data/lib/google/protobuf/timestamp_pb.rb +18 -0
- data/lib/google/protobuf/wrappers_pb.rb +26 -0
- data/lib/google/rpc/status_pb.rb +20 -0
- data/lib/udpa/annotations/migrate_pb.rb +22 -0
- data/lib/udpa/annotations/security_pb.rb +23 -0
- data/lib/udpa/annotations/sensitive_pb.rb +19 -0
- data/lib/udpa/annotations/status_pb.rb +21 -0
- data/lib/udpa/annotations/versioning_pb.rb +20 -0
- data/lib/validate/validate_pb.rb +43 -0
- data/lib/xds/annotations/v3/status_pb.rb +26 -0
- data/lib/xds/core/v3/authority_pb.rb +23 -0
- data/lib/xds/core/v3/cidr_pb.rb +24 -0
- data/lib/xds/core/v3/collection_entry_pb.rb +26 -0
- data/lib/xds/core/v3/context_params_pb.rb +22 -0
- data/lib/xds/core/v3/extension_pb.rb +23 -0
- data/lib/xds/core/v3/resource_locator_pb.rb +26 -0
- data/lib/xds/core/v3/resource_name_pb.rb +24 -0
- data/lib/xds/core/v3/resource_pb.rb +24 -0
- data/lib/xds/type/matcher/v3/domain_pb.rb +27 -0
- data/lib/xds/type/matcher/v3/http_inputs_pb.rb +22 -0
- data/lib/xds/type/matcher/v3/ip_pb.rb +28 -0
- data/lib/xds/type/matcher/v3/matcher_pb.rb +34 -0
- data/lib/xds/type/matcher/v3/range_pb.rb +31 -0
- data/lib/xds/type/matcher/v3/regex_pb.rb +25 -0
- data/lib/xds/type/matcher/v3/string_pb.rb +27 -0
- data/license.md +21 -0
- data/plan.md +156 -0
- data/proto/envoy/annotations/deprecation.proto +34 -0
- data/proto/envoy/annotations/resource.proto +19 -0
- data/proto/envoy/config/README.md +3 -0
- data/proto/envoy/config/cluster/v3/BUILD +18 -0
- data/proto/envoy/config/cluster/v3/circuit_breaker.proto +121 -0
- data/proto/envoy/config/cluster/v3/cluster.proto +1407 -0
- data/proto/envoy/config/cluster/v3/filter.proto +40 -0
- data/proto/envoy/config/cluster/v3/outlier_detection.proto +180 -0
- data/proto/envoy/config/core/v3/BUILD +16 -0
- data/proto/envoy/config/core/v3/address.proto +214 -0
- data/proto/envoy/config/core/v3/backoff.proto +37 -0
- data/proto/envoy/config/core/v3/base.proto +662 -0
- data/proto/envoy/config/core/v3/cel.proto +63 -0
- data/proto/envoy/config/core/v3/config_source.proto +283 -0
- data/proto/envoy/config/core/v3/event_service_config.proto +29 -0
- data/proto/envoy/config/core/v3/extension.proto +32 -0
- data/proto/envoy/config/core/v3/grpc_method_list.proto +33 -0
- data/proto/envoy/config/core/v3/grpc_service.proto +355 -0
- data/proto/envoy/config/core/v3/health_check.proto +443 -0
- data/proto/envoy/config/core/v3/http_service.proto +35 -0
- data/proto/envoy/config/core/v3/http_uri.proto +58 -0
- data/proto/envoy/config/core/v3/protocol.proto +807 -0
- data/proto/envoy/config/core/v3/proxy_protocol.proto +114 -0
- data/proto/envoy/config/core/v3/resolver.proto +36 -0
- data/proto/envoy/config/core/v3/socket_cmsg_headers.proto +28 -0
- data/proto/envoy/config/core/v3/socket_option.proto +108 -0
- data/proto/envoy/config/core/v3/substitution_format_string.proto +136 -0
- data/proto/envoy/config/core/v3/udp_socket_config.proto +32 -0
- data/proto/envoy/config/endpoint/v3/BUILD +16 -0
- data/proto/envoy/config/endpoint/v3/endpoint.proto +137 -0
- data/proto/envoy/config/endpoint/v3/endpoint_components.proto +229 -0
- data/proto/envoy/config/endpoint/v3/load_report.proto +220 -0
- data/proto/envoy/config/listener/v3/BUILD +18 -0
- data/proto/envoy/config/listener/v3/api_listener.proto +34 -0
- data/proto/envoy/config/listener/v3/listener.proto +455 -0
- data/proto/envoy/config/listener/v3/listener_components.proto +353 -0
- data/proto/envoy/config/listener/v3/quic_config.proto +108 -0
- data/proto/envoy/config/listener/v3/udp_listener_config.proto +52 -0
- data/proto/envoy/config/route/v3/BUILD +19 -0
- data/proto/envoy/config/route/v3/route.proto +172 -0
- data/proto/envoy/config/route/v3/route_components.proto +2918 -0
- data/proto/envoy/config/route/v3/scoped_route.proto +133 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/BUILD +14 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/cert.proto +12 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/common.proto +597 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/secret.proto +61 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/tls.proto +366 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.proto +67 -0
- data/proto/envoy/service/README.md +3 -0
- data/proto/envoy/service/discovery/v3/BUILD +13 -0
- data/proto/envoy/service/discovery/v3/ads.proto +44 -0
- data/proto/envoy/service/discovery/v3/discovery.proto +443 -0
- data/proto/envoy/type/BUILD +9 -0
- data/proto/envoy/type/hash_policy.proto +28 -0
- data/proto/envoy/type/http.proto +24 -0
- data/proto/envoy/type/http_status.proto +140 -0
- data/proto/envoy/type/matcher/v3/address.proto +22 -0
- data/proto/envoy/type/matcher/v3/filter_state.proto +33 -0
- data/proto/envoy/type/matcher/v3/http_inputs.proto +71 -0
- data/proto/envoy/type/matcher/v3/metadata.proto +110 -0
- data/proto/envoy/type/matcher/v3/node.proto +29 -0
- data/proto/envoy/type/matcher/v3/number.proto +33 -0
- data/proto/envoy/type/matcher/v3/path.proto +31 -0
- data/proto/envoy/type/matcher/v3/regex.proto +97 -0
- data/proto/envoy/type/matcher/v3/status_code_input.proto +23 -0
- data/proto/envoy/type/matcher/v3/string.proto +94 -0
- data/proto/envoy/type/matcher/v3/struct.proto +91 -0
- data/proto/envoy/type/matcher/v3/value.proto +80 -0
- data/proto/envoy/type/metadata/v3/metadata.proto +117 -0
- data/proto/envoy/type/percent.proto +52 -0
- data/proto/envoy/type/range.proto +43 -0
- data/proto/envoy/type/semantic_version.proto +24 -0
- data/proto/envoy/type/token_bucket.proto +36 -0
- data/proto/envoy/type/v3/BUILD +12 -0
- data/proto/envoy/type/v3/hash_policy.proto +43 -0
- data/proto/envoy/type/v3/http.proto +24 -0
- data/proto/envoy/type/v3/http_status.proto +199 -0
- data/proto/envoy/type/v3/percent.proto +57 -0
- data/proto/envoy/type/v3/range.proto +50 -0
- data/proto/envoy/type/v3/ratelimit_strategy.proto +79 -0
- data/proto/envoy/type/v3/ratelimit_unit.proto +37 -0
- data/proto/envoy/type/v3/semantic_version.proto +27 -0
- data/proto/envoy/type/v3/token_bucket.proto +39 -0
- data/proto/google/protobuf/any.proto +162 -0
- data/proto/google/protobuf/duration.proto +115 -0
- data/proto/google/protobuf/empty.proto +51 -0
- data/proto/google/protobuf/struct.proto +95 -0
- data/proto/google/protobuf/timestamp.proto +145 -0
- data/proto/google/protobuf/wrappers.proto +157 -0
- data/proto/google/rpc/status.proto +47 -0
- data/proto/readme.md +70 -0
- data/proto/udpa/annotations/migrate.proto +49 -0
- data/proto/udpa/annotations/security.proto +31 -0
- data/proto/udpa/annotations/sensitive.proto +14 -0
- data/proto/udpa/annotations/status.proto +34 -0
- data/proto/udpa/annotations/versioning.proto +17 -0
- data/proto/validate/validate.proto +862 -0
- data/proto/xds/annotations/v3/migrate.proto +46 -0
- data/proto/xds/annotations/v3/security.proto +30 -0
- data/proto/xds/annotations/v3/sensitive.proto +16 -0
- data/proto/xds/annotations/v3/status.proto +59 -0
- data/proto/xds/annotations/v3/versioning.proto +20 -0
- data/proto/xds/core/v3/authority.proto +22 -0
- data/proto/xds/core/v3/cidr.proto +25 -0
- data/proto/xds/core/v3/collection_entry.proto +55 -0
- data/proto/xds/core/v3/context_params.proto +23 -0
- data/proto/xds/core/v3/extension.proto +26 -0
- data/proto/xds/core/v3/resource.proto +29 -0
- data/proto/xds/core/v3/resource_locator.proto +118 -0
- data/proto/xds/core/v3/resource_name.proto +42 -0
- data/proto/xds/type/matcher/v3/cel.proto +37 -0
- data/proto/xds/type/matcher/v3/domain.proto +46 -0
- data/proto/xds/type/matcher/v3/http_inputs.proto +23 -0
- data/proto/xds/type/matcher/v3/ip.proto +53 -0
- data/proto/xds/type/matcher/v3/matcher.proto +144 -0
- data/proto/xds/type/matcher/v3/range.proto +69 -0
- data/proto/xds/type/matcher/v3/regex.proto +46 -0
- data/proto/xds/type/matcher/v3/string.proto +71 -0
- data/proto/xds/type/v3/cel.proto +77 -0
- data/proto/xds/type/v3/range.proto +40 -0
- data/proto/xds/type/v3/typed_struct.proto +44 -0
- data/readme.md +37 -0
- data/releases.md +5 -0
- data/xds/Dockerfile.backend +24 -0
- data/xds/Dockerfile.control-plane +22 -0
- data/xds/backend_server.rb +68 -0
- data/xds/docker-compose.yaml +89 -0
- data/xds/go.mod +22 -0
- data/xds/go.sum +82 -0
- data/xds/readme.md +122 -0
- data/xds/test/async/grpc/xds/client.rb +294 -0
- data/xds/test/async/grpc/xds/control_plane.rb +94 -0
- data/xds/test_server.go +355 -0
- data/xds/update_protos.sh +123 -0
- data.tar.gz.sig +0 -0
- metadata +386 -0
- metadata.gz.sig +2 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.endpoint.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/config/core/v3/address.proto";
|
|
6
|
+
import "envoy/config/core/v3/base.proto";
|
|
7
|
+
import "envoy/config/core/v3/config_source.proto";
|
|
8
|
+
import "envoy/config/core/v3/health_check.proto";
|
|
9
|
+
|
|
10
|
+
import "google/protobuf/wrappers.proto";
|
|
11
|
+
|
|
12
|
+
import "xds/core/v3/collection_entry.proto";
|
|
13
|
+
|
|
14
|
+
import "envoy/annotations/deprecation.proto";
|
|
15
|
+
import "udpa/annotations/status.proto";
|
|
16
|
+
import "udpa/annotations/versioning.proto";
|
|
17
|
+
import "validate/validate.proto";
|
|
18
|
+
|
|
19
|
+
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
|
20
|
+
option java_outer_classname = "EndpointComponentsProto";
|
|
21
|
+
option java_multiple_files = true;
|
|
22
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
|
|
23
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
24
|
+
|
|
25
|
+
// [#protodoc-title: Endpoints]
|
|
26
|
+
|
|
27
|
+
// Upstream host identifier.
|
|
28
|
+
message Endpoint {
|
|
29
|
+
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.Endpoint";
|
|
30
|
+
|
|
31
|
+
// The optional health check configuration.
|
|
32
|
+
message HealthCheckConfig {
|
|
33
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
34
|
+
"envoy.api.v2.endpoint.Endpoint.HealthCheckConfig";
|
|
35
|
+
|
|
36
|
+
// Optional alternative health check port value.
|
|
37
|
+
//
|
|
38
|
+
// By default the health check address port of an upstream host is the same
|
|
39
|
+
// as the host's serving address port. This provides an alternative health
|
|
40
|
+
// check port. Setting this with a non-zero value allows an upstream host
|
|
41
|
+
// to have different health check address port.
|
|
42
|
+
uint32 port_value = 1 [(validate.rules).uint32 = {lte: 65535}];
|
|
43
|
+
|
|
44
|
+
// By default, the host header for L7 health checks is controlled by cluster level configuration
|
|
45
|
+
// (see: :ref:`host <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.host>` and
|
|
46
|
+
// :ref:`authority <envoy_v3_api_field_config.core.v3.HealthCheck.GrpcHealthCheck.authority>`). Setting this
|
|
47
|
+
// to a non-empty value allows overriding the cluster level configuration for a specific
|
|
48
|
+
// endpoint.
|
|
49
|
+
string hostname = 2;
|
|
50
|
+
|
|
51
|
+
// Optional alternative health check host address.
|
|
52
|
+
//
|
|
53
|
+
// .. attention::
|
|
54
|
+
//
|
|
55
|
+
// The form of the health check host address is expected to be a direct IP address.
|
|
56
|
+
core.v3.Address address = 3;
|
|
57
|
+
|
|
58
|
+
// Optional flag to control if perform active health check for this endpoint.
|
|
59
|
+
// Active health check is enabled by default if there is a health checker.
|
|
60
|
+
bool disable_active_health_check = 4;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
message AdditionalAddress {
|
|
64
|
+
// Additional address that is associated with the endpoint.
|
|
65
|
+
core.v3.Address address = 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// The upstream host address.
|
|
69
|
+
//
|
|
70
|
+
// .. attention::
|
|
71
|
+
//
|
|
72
|
+
// The form of host address depends on the given cluster type. For STATIC or EDS,
|
|
73
|
+
// it is expected to be a direct IP address (or something resolvable by the
|
|
74
|
+
// specified :ref:`resolver <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`
|
|
75
|
+
// in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
|
|
76
|
+
// and will be resolved via DNS.
|
|
77
|
+
core.v3.Address address = 1;
|
|
78
|
+
|
|
79
|
+
// The optional health check configuration is used as configuration for the
|
|
80
|
+
// health checker to contact the health checked host.
|
|
81
|
+
//
|
|
82
|
+
// .. attention::
|
|
83
|
+
//
|
|
84
|
+
// This takes into effect only for upstream clusters with
|
|
85
|
+
// :ref:`active health checking <arch_overview_health_checking>` enabled.
|
|
86
|
+
HealthCheckConfig health_check_config = 2;
|
|
87
|
+
|
|
88
|
+
// The hostname associated with this endpoint. This hostname is not used for routing or address
|
|
89
|
+
// resolution. If provided, it will be associated with the endpoint, and can be used for features
|
|
90
|
+
// that require a hostname, like
|
|
91
|
+
// :ref:`auto_host_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.auto_host_rewrite>`.
|
|
92
|
+
string hostname = 3;
|
|
93
|
+
|
|
94
|
+
// An ordered list of addresses that together with ``address`` comprise the
|
|
95
|
+
// list of addresses for an endpoint. The address given in the ``address`` is
|
|
96
|
+
// prepended to this list. It is assumed that the list must already be
|
|
97
|
+
// sorted by preference order of the addresses. This will only be supported
|
|
98
|
+
// for STATIC and EDS clusters.
|
|
99
|
+
repeated AdditionalAddress additional_addresses = 4;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// An Endpoint that Envoy can route traffic to.
|
|
103
|
+
// [#next-free-field: 6]
|
|
104
|
+
message LbEndpoint {
|
|
105
|
+
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.LbEndpoint";
|
|
106
|
+
|
|
107
|
+
// Upstream host identifier or a named reference.
|
|
108
|
+
oneof host_identifier {
|
|
109
|
+
Endpoint endpoint = 1;
|
|
110
|
+
|
|
111
|
+
// [#not-implemented-hide:]
|
|
112
|
+
string endpoint_name = 5;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Optional health status when known and supplied by EDS server.
|
|
116
|
+
core.v3.HealthStatus health_status = 2;
|
|
117
|
+
|
|
118
|
+
// The endpoint metadata specifies values that may be used by the load
|
|
119
|
+
// balancer to select endpoints in a cluster for a given request. The filter
|
|
120
|
+
// name should be specified as ``envoy.lb``. An example boolean key-value pair
|
|
121
|
+
// is ``canary``, providing the optional canary status of the upstream host.
|
|
122
|
+
// This may be matched against in a route's
|
|
123
|
+
// :ref:`RouteAction <envoy_v3_api_msg_config.route.v3.RouteAction>` metadata_match field
|
|
124
|
+
// to subset the endpoints considered in cluster load balancing.
|
|
125
|
+
core.v3.Metadata metadata = 3;
|
|
126
|
+
|
|
127
|
+
// The optional load balancing weight of the upstream host; at least 1.
|
|
128
|
+
// Envoy uses the load balancing weight in some of the built in load
|
|
129
|
+
// balancers. The load balancing weight for an endpoint is divided by the sum
|
|
130
|
+
// of the weights of all endpoints in the endpoint's locality to produce a
|
|
131
|
+
// percentage of traffic for the endpoint. This percentage is then further
|
|
132
|
+
// weighted by the endpoint's locality's load balancing weight from
|
|
133
|
+
// LocalityLbEndpoints. If unspecified, will be treated as 1. The sum
|
|
134
|
+
// of the weights of all endpoints in the endpoint's locality must not
|
|
135
|
+
// exceed uint32_t maximal value (4294967295).
|
|
136
|
+
google.protobuf.UInt32Value load_balancing_weight = 4 [(validate.rules).uint32 = {gte: 1}];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// LbEndpoint list collection. Entries are `LbEndpoint` resources or references.
|
|
140
|
+
// [#not-implemented-hide:]
|
|
141
|
+
message LbEndpointCollection {
|
|
142
|
+
xds.core.v3.CollectionEntry entries = 1;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// A configuration for an LEDS collection.
|
|
146
|
+
message LedsClusterLocalityConfig {
|
|
147
|
+
// Configuration for the source of LEDS updates for a Locality.
|
|
148
|
+
core.v3.ConfigSource leds_config = 1;
|
|
149
|
+
|
|
150
|
+
// The name of the LbEndpoint collection resource.
|
|
151
|
+
//
|
|
152
|
+
// If the name ends in ``/*``, it indicates an LbEndpoint glob collection,
|
|
153
|
+
// which is supported only in the xDS incremental protocol variants.
|
|
154
|
+
// Otherwise, it indicates an LbEndpointCollection list collection.
|
|
155
|
+
//
|
|
156
|
+
// Envoy currently supports only glob collections.
|
|
157
|
+
string leds_collection_name = 2;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// A group of endpoints belonging to a Locality.
|
|
161
|
+
// One can have multiple LocalityLbEndpoints for a locality, but only if
|
|
162
|
+
// they have different priorities.
|
|
163
|
+
// [#next-free-field: 10]
|
|
164
|
+
message LocalityLbEndpoints {
|
|
165
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
166
|
+
"envoy.api.v2.endpoint.LocalityLbEndpoints";
|
|
167
|
+
|
|
168
|
+
// [#not-implemented-hide:]
|
|
169
|
+
// A list of endpoints of a specific locality.
|
|
170
|
+
message LbEndpointList {
|
|
171
|
+
repeated LbEndpoint lb_endpoints = 1;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Identifies location of where the upstream hosts run.
|
|
175
|
+
core.v3.Locality locality = 1;
|
|
176
|
+
|
|
177
|
+
// Metadata to provide additional information about the locality endpoints in aggregate.
|
|
178
|
+
core.v3.Metadata metadata = 9;
|
|
179
|
+
|
|
180
|
+
// The group of endpoints belonging to the locality specified.
|
|
181
|
+
// This is ignored if :ref:`leds_cluster_locality_config
|
|
182
|
+
// <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.leds_cluster_locality_config>` is set.
|
|
183
|
+
repeated LbEndpoint lb_endpoints = 2;
|
|
184
|
+
|
|
185
|
+
oneof lb_config {
|
|
186
|
+
// [#not-implemented-hide:]
|
|
187
|
+
// Not implemented and deprecated.
|
|
188
|
+
LbEndpointList load_balancer_endpoints = 7
|
|
189
|
+
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
|
190
|
+
|
|
191
|
+
// LEDS Configuration for the current locality.
|
|
192
|
+
// If this is set, the :ref:`lb_endpoints
|
|
193
|
+
// <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.lb_endpoints>`
|
|
194
|
+
// field is ignored.
|
|
195
|
+
LedsClusterLocalityConfig leds_cluster_locality_config = 8;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
|
|
199
|
+
// balancing weight for a locality is divided by the sum of the weights of all
|
|
200
|
+
// localities at the same priority level to produce the effective percentage
|
|
201
|
+
// of traffic for the locality. The sum of the weights of all localities at
|
|
202
|
+
// the same priority level must not exceed uint32_t maximal value (4294967295).
|
|
203
|
+
//
|
|
204
|
+
// Locality weights are only considered when :ref:`locality weighted load
|
|
205
|
+
// balancing <arch_overview_load_balancing_locality_weighted_lb>` is
|
|
206
|
+
// configured. These weights are ignored otherwise. If no weights are
|
|
207
|
+
// specified when locality weighted load balancing is enabled, the locality is
|
|
208
|
+
// assigned no load.
|
|
209
|
+
google.protobuf.UInt32Value load_balancing_weight = 3 [(validate.rules).uint32 = {gte: 1}];
|
|
210
|
+
|
|
211
|
+
// Optional: the priority for this LocalityLbEndpoints. If unspecified this will
|
|
212
|
+
// default to the highest priority (0).
|
|
213
|
+
//
|
|
214
|
+
// Under usual circumstances, Envoy will only select endpoints for the highest
|
|
215
|
+
// priority (0). In the event that enough endpoints for a particular priority are
|
|
216
|
+
// unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
|
|
217
|
+
// next highest priority group. Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>`.
|
|
218
|
+
//
|
|
219
|
+
// Priorities should range from 0 (highest) to N (lowest) without skipping.
|
|
220
|
+
uint32 priority = 5 [(validate.rules).uint32 = {lte: 128}];
|
|
221
|
+
|
|
222
|
+
// Optional: Per locality proximity value which indicates how close this
|
|
223
|
+
// locality is from the source locality. This value only provides ordering
|
|
224
|
+
// information (lower the value, closer it is to the source locality).
|
|
225
|
+
// This will be consumed by load balancing schemes that need proximity order
|
|
226
|
+
// to determine where to route the requests.
|
|
227
|
+
// [#not-implemented-hide:]
|
|
228
|
+
google.protobuf.UInt32Value proximity = 6;
|
|
229
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.endpoint.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/config/core/v3/address.proto";
|
|
6
|
+
import "envoy/config/core/v3/base.proto";
|
|
7
|
+
|
|
8
|
+
import "google/protobuf/duration.proto";
|
|
9
|
+
import "google/protobuf/struct.proto";
|
|
10
|
+
|
|
11
|
+
import "xds/annotations/v3/status.proto";
|
|
12
|
+
|
|
13
|
+
import "udpa/annotations/status.proto";
|
|
14
|
+
import "udpa/annotations/versioning.proto";
|
|
15
|
+
import "validate/validate.proto";
|
|
16
|
+
|
|
17
|
+
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
|
18
|
+
option java_outer_classname = "LoadReportProto";
|
|
19
|
+
option java_multiple_files = true;
|
|
20
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
|
|
21
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
22
|
+
|
|
23
|
+
// [#protodoc-title: Load Report]
|
|
24
|
+
|
|
25
|
+
// These are stats Envoy reports to the management server at a frequency defined by
|
|
26
|
+
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.load_reporting_interval>`.
|
|
27
|
+
// Stats per upstream region/zone and optionally per subzone.
|
|
28
|
+
// [#next-free-field: 15]
|
|
29
|
+
message UpstreamLocalityStats {
|
|
30
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
31
|
+
"envoy.api.v2.endpoint.UpstreamLocalityStats";
|
|
32
|
+
|
|
33
|
+
// Name of zone, region and optionally endpoint group these metrics were
|
|
34
|
+
// collected from. Zone and region names could be empty if unknown.
|
|
35
|
+
core.v3.Locality locality = 1;
|
|
36
|
+
|
|
37
|
+
// The total number of requests successfully completed by the endpoints in the
|
|
38
|
+
// locality.
|
|
39
|
+
uint64 total_successful_requests = 2;
|
|
40
|
+
|
|
41
|
+
// The total number of unfinished requests. A request can be an HTTP request
|
|
42
|
+
// or a TCP connection for a TCP connection pool.
|
|
43
|
+
uint64 total_requests_in_progress = 3;
|
|
44
|
+
|
|
45
|
+
// The total number of requests that failed due to errors at the endpoint,
|
|
46
|
+
// aggregated over all endpoints in the locality.
|
|
47
|
+
uint64 total_error_requests = 4;
|
|
48
|
+
|
|
49
|
+
// The total number of requests that were issued by this Envoy since
|
|
50
|
+
// the last report. This information is aggregated over all the
|
|
51
|
+
// upstream endpoints in the locality. A request can be an HTTP request
|
|
52
|
+
// or a TCP connection for a TCP connection pool.
|
|
53
|
+
uint64 total_issued_requests = 8;
|
|
54
|
+
|
|
55
|
+
// The total number of connections in an established state at the time of the
|
|
56
|
+
// report. This field is aggregated over all the upstream endpoints in the
|
|
57
|
+
// locality.
|
|
58
|
+
// In Envoy, this information may be based on ``upstream_cx_active metric``.
|
|
59
|
+
// [#not-implemented-hide:]
|
|
60
|
+
uint64 total_active_connections = 9 [(xds.annotations.v3.field_status).work_in_progress = true];
|
|
61
|
+
|
|
62
|
+
// The total number of connections opened since the last report.
|
|
63
|
+
// This field is aggregated over all the upstream endpoints in the locality.
|
|
64
|
+
// In Envoy, this information may be based on ``upstream_cx_total`` metric
|
|
65
|
+
// compared to itself between start and end of an interval, i.e.
|
|
66
|
+
// ``upstream_cx_total``(now) - ``upstream_cx_total``(now -
|
|
67
|
+
// load_report_interval).
|
|
68
|
+
// [#not-implemented-hide:]
|
|
69
|
+
uint64 total_new_connections = 10 [(xds.annotations.v3.field_status).work_in_progress = true];
|
|
70
|
+
|
|
71
|
+
// The total number of connection failures since the last report.
|
|
72
|
+
// This field is aggregated over all the upstream endpoints in the locality.
|
|
73
|
+
// In Envoy, this information may be based on ``upstream_cx_connect_fail``
|
|
74
|
+
// metric compared to itself between start and end of an interval, i.e.
|
|
75
|
+
// ``upstream_cx_connect_fail``(now) - ``upstream_cx_connect_fail``(now -
|
|
76
|
+
// load_report_interval).
|
|
77
|
+
// [#not-implemented-hide:]
|
|
78
|
+
uint64 total_fail_connections = 11 [(xds.annotations.v3.field_status).work_in_progress = true];
|
|
79
|
+
|
|
80
|
+
// CPU utilization stats for multi-dimensional load balancing.
|
|
81
|
+
// This typically comes from endpoint metrics reported via ORCA.
|
|
82
|
+
UnnamedEndpointLoadMetricStats cpu_utilization = 12;
|
|
83
|
+
|
|
84
|
+
// Memory utilization for multi-dimensional load balancing.
|
|
85
|
+
// This typically comes from endpoint metrics reported via ORCA.
|
|
86
|
+
UnnamedEndpointLoadMetricStats mem_utilization = 13;
|
|
87
|
+
|
|
88
|
+
// Blended application-defined utilization for multi-dimensional load balancing.
|
|
89
|
+
// This typically comes from endpoint metrics reported via ORCA.
|
|
90
|
+
UnnamedEndpointLoadMetricStats application_utilization = 14;
|
|
91
|
+
|
|
92
|
+
// Named stats for multi-dimensional load balancing.
|
|
93
|
+
// These typically come from endpoint metrics reported via ORCA.
|
|
94
|
+
repeated EndpointLoadMetricStats load_metric_stats = 5;
|
|
95
|
+
|
|
96
|
+
// Endpoint granularity stats information for this locality. This information
|
|
97
|
+
// is populated if the Server requests it by setting
|
|
98
|
+
// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.report_endpoint_granularity>`.
|
|
99
|
+
repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
|
|
100
|
+
|
|
101
|
+
// [#not-implemented-hide:] The priority of the endpoint group these metrics
|
|
102
|
+
// were collected from.
|
|
103
|
+
uint32 priority = 6;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// [#next-free-field: 8]
|
|
107
|
+
message UpstreamEndpointStats {
|
|
108
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
109
|
+
"envoy.api.v2.endpoint.UpstreamEndpointStats";
|
|
110
|
+
|
|
111
|
+
// Upstream host address.
|
|
112
|
+
core.v3.Address address = 1;
|
|
113
|
+
|
|
114
|
+
// Opaque and implementation dependent metadata of the
|
|
115
|
+
// endpoint. Envoy will pass this directly to the management server.
|
|
116
|
+
google.protobuf.Struct metadata = 6;
|
|
117
|
+
|
|
118
|
+
// The total number of requests successfully completed by the endpoints in the
|
|
119
|
+
// locality. These include non-5xx responses for HTTP, where errors
|
|
120
|
+
// originate at the client and the endpoint responded successfully. For gRPC,
|
|
121
|
+
// the grpc-status values are those not covered by total_error_requests below.
|
|
122
|
+
uint64 total_successful_requests = 2;
|
|
123
|
+
|
|
124
|
+
// The total number of unfinished requests for this endpoint.
|
|
125
|
+
uint64 total_requests_in_progress = 3;
|
|
126
|
+
|
|
127
|
+
// The total number of requests that failed due to errors at the endpoint.
|
|
128
|
+
// For HTTP these are responses with 5xx status codes and for gRPC the
|
|
129
|
+
// grpc-status values:
|
|
130
|
+
//
|
|
131
|
+
// - DeadlineExceeded
|
|
132
|
+
// - Unimplemented
|
|
133
|
+
// - Internal
|
|
134
|
+
// - Unavailable
|
|
135
|
+
// - Unknown
|
|
136
|
+
// - DataLoss
|
|
137
|
+
uint64 total_error_requests = 4;
|
|
138
|
+
|
|
139
|
+
// The total number of requests that were issued to this endpoint
|
|
140
|
+
// since the last report. A single TCP connection, HTTP or gRPC
|
|
141
|
+
// request or stream is counted as one request.
|
|
142
|
+
uint64 total_issued_requests = 7;
|
|
143
|
+
|
|
144
|
+
// Stats for multi-dimensional load balancing.
|
|
145
|
+
repeated EndpointLoadMetricStats load_metric_stats = 5;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
message EndpointLoadMetricStats {
|
|
149
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
150
|
+
"envoy.api.v2.endpoint.EndpointLoadMetricStats";
|
|
151
|
+
|
|
152
|
+
// Name of the metric; may be empty.
|
|
153
|
+
string metric_name = 1;
|
|
154
|
+
|
|
155
|
+
// Number of calls that finished and included this metric.
|
|
156
|
+
uint64 num_requests_finished_with_metric = 2;
|
|
157
|
+
|
|
158
|
+
// Sum of metric values across all calls that finished with this metric for
|
|
159
|
+
// load_reporting_interval.
|
|
160
|
+
double total_metric_value = 3;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Same as EndpointLoadMetricStats, except without the metric_name field.
|
|
164
|
+
message UnnamedEndpointLoadMetricStats {
|
|
165
|
+
// Number of calls that finished and included this metric.
|
|
166
|
+
uint64 num_requests_finished_with_metric = 1;
|
|
167
|
+
|
|
168
|
+
// Sum of metric values across all calls that finished with this metric for
|
|
169
|
+
// load_reporting_interval.
|
|
170
|
+
double total_metric_value = 2;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Per cluster load stats. Envoy reports these stats a management server in a
|
|
174
|
+
// :ref:`LoadStatsRequest<envoy_v3_api_msg_service.load_stats.v3.LoadStatsRequest>`
|
|
175
|
+
// Next ID: 7
|
|
176
|
+
// [#next-free-field: 7]
|
|
177
|
+
message ClusterStats {
|
|
178
|
+
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.ClusterStats";
|
|
179
|
+
|
|
180
|
+
message DroppedRequests {
|
|
181
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
182
|
+
"envoy.api.v2.endpoint.ClusterStats.DroppedRequests";
|
|
183
|
+
|
|
184
|
+
// Identifier for the policy specifying the drop.
|
|
185
|
+
string category = 1 [(validate.rules).string = {min_len: 1}];
|
|
186
|
+
|
|
187
|
+
// Total number of deliberately dropped requests for the category.
|
|
188
|
+
uint64 dropped_count = 2;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// The name of the cluster.
|
|
192
|
+
string cluster_name = 1 [(validate.rules).string = {min_len: 1}];
|
|
193
|
+
|
|
194
|
+
// The eds_cluster_config service_name of the cluster.
|
|
195
|
+
// It's possible that two clusters send the same service_name to EDS,
|
|
196
|
+
// in that case, the management server is supposed to do aggregation on the load reports.
|
|
197
|
+
string cluster_service_name = 6;
|
|
198
|
+
|
|
199
|
+
// Need at least one.
|
|
200
|
+
repeated UpstreamLocalityStats upstream_locality_stats = 2
|
|
201
|
+
[(validate.rules).repeated = {min_items: 1}];
|
|
202
|
+
|
|
203
|
+
// Cluster-level stats such as total_successful_requests may be computed by
|
|
204
|
+
// summing upstream_locality_stats. In addition, below there are additional
|
|
205
|
+
// cluster-wide stats.
|
|
206
|
+
//
|
|
207
|
+
// The total number of dropped requests. This covers requests
|
|
208
|
+
// deliberately dropped by the drop_overload policy and circuit breaking.
|
|
209
|
+
uint64 total_dropped_requests = 3;
|
|
210
|
+
|
|
211
|
+
// Information about deliberately dropped requests for each category specified
|
|
212
|
+
// in the DropOverload policy.
|
|
213
|
+
repeated DroppedRequests dropped_requests = 5;
|
|
214
|
+
|
|
215
|
+
// Period over which the actual load report occurred. This will be guaranteed to include every
|
|
216
|
+
// request reported. Due to system load and delays between the ``LoadStatsRequest`` sent from Envoy
|
|
217
|
+
// and the ``LoadStatsResponse`` message sent from the management server, this may be longer than
|
|
218
|
+
// the requested load reporting interval in the ``LoadStatsResponse``.
|
|
219
|
+
google.protobuf.Duration load_report_interval = 4;
|
|
220
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
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/config/accesslog/v3:pkg",
|
|
11
|
+
"//envoy/config/core/v3:pkg",
|
|
12
|
+
"//envoy/type/v3:pkg",
|
|
13
|
+
"@com_github_cncf_xds//udpa/annotations:pkg",
|
|
14
|
+
"@com_github_cncf_xds//xds/annotations/v3:pkg",
|
|
15
|
+
"@com_github_cncf_xds//xds/core/v3:pkg",
|
|
16
|
+
"@com_github_cncf_xds//xds/type/matcher/v3:pkg",
|
|
17
|
+
],
|
|
18
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.listener.v3;
|
|
4
|
+
|
|
5
|
+
import "google/protobuf/any.proto";
|
|
6
|
+
|
|
7
|
+
import "udpa/annotations/status.proto";
|
|
8
|
+
import "udpa/annotations/versioning.proto";
|
|
9
|
+
|
|
10
|
+
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
|
11
|
+
option java_outer_classname = "ApiListenerProto";
|
|
12
|
+
option java_multiple_files = true;
|
|
13
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
|
|
14
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
15
|
+
|
|
16
|
+
// [#protodoc-title: API listener]
|
|
17
|
+
|
|
18
|
+
// Describes a type of API listener, which is used in non-proxy clients. The type of API
|
|
19
|
+
// exposed to the non-proxy application depends on the type of API listener.
|
|
20
|
+
message ApiListener {
|
|
21
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
22
|
+
"envoy.config.listener.v2.ApiListener";
|
|
23
|
+
|
|
24
|
+
// The type in this field determines the type of API listener. At present, the following
|
|
25
|
+
// types are supported:
|
|
26
|
+
// envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager (HTTP)
|
|
27
|
+
// envoy.extensions.filters.network.http_connection_manager.v3.EnvoyMobileHttpConnectionManager (HTTP)
|
|
28
|
+
// [#next-major-version: In the v3 API, replace this Any field with a oneof containing the
|
|
29
|
+
// specific config message for each type of API listener. We could not do this in v2 because
|
|
30
|
+
// it would have caused circular dependencies for go protos: lds.proto depends on this file,
|
|
31
|
+
// and http_connection_manager.proto depends on rds.proto, which is in the same directory as
|
|
32
|
+
// lds.proto, so lds.proto cannot depend on this file.]
|
|
33
|
+
google.protobuf.Any api_listener = 1;
|
|
34
|
+
}
|