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,114 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.core.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/config/core/v3/substitution_format_string.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 = "ProxyProtocolProto";
|
|
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: Proxy protocol]
|
|
17
|
+
|
|
18
|
+
message ProxyProtocolPassThroughTLVs {
|
|
19
|
+
enum PassTLVsMatchType {
|
|
20
|
+
// Pass all TLVs.
|
|
21
|
+
INCLUDE_ALL = 0;
|
|
22
|
+
|
|
23
|
+
// Pass specific TLVs defined in tlv_type.
|
|
24
|
+
INCLUDE = 1;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// The strategy to pass through TLVs. Default is INCLUDE_ALL.
|
|
28
|
+
// If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field.
|
|
29
|
+
PassTLVsMatchType match_type = 1;
|
|
30
|
+
|
|
31
|
+
// The TLV types that are applied based on match_type.
|
|
32
|
+
// TLV type is defined as uint8_t in proxy protocol. See `the spec
|
|
33
|
+
// <https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt>`_ for details.
|
|
34
|
+
repeated uint32 tlv_type = 2 [(validate.rules).repeated = {items {uint32 {lt: 256}}}];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Represents a single Type-Length-Value (TLV) entry.
|
|
38
|
+
message TlvEntry {
|
|
39
|
+
// The type of the TLV. Must be a uint8 (0-255) as per the Proxy Protocol v2 specification.
|
|
40
|
+
uint32 type = 1 [(validate.rules).uint32 = {lt: 256}];
|
|
41
|
+
|
|
42
|
+
// The static value of the TLV.
|
|
43
|
+
// Only one of ``value`` or ``format_string`` may be set.
|
|
44
|
+
bytes value = 2;
|
|
45
|
+
|
|
46
|
+
// Uses the :ref:`format string <config_access_log_format_strings>` to dynamically
|
|
47
|
+
// populate the TLV value from stream information. This allows dynamic values
|
|
48
|
+
// such as metadata, filter state, or other stream properties to be included in
|
|
49
|
+
// the TLV.
|
|
50
|
+
//
|
|
51
|
+
// For example:
|
|
52
|
+
//
|
|
53
|
+
// .. code-block:: yaml
|
|
54
|
+
//
|
|
55
|
+
// type: 0xF0
|
|
56
|
+
// format_string:
|
|
57
|
+
// text_format_source:
|
|
58
|
+
// inline_string: "%DYNAMIC_METADATA(envoy.filters.network:key)%"
|
|
59
|
+
//
|
|
60
|
+
// The formatted string will be used directly as the TLV value.
|
|
61
|
+
// Only one of ``value`` or ``format_string`` may be set.
|
|
62
|
+
SubstitutionFormatString format_string = 3;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
message ProxyProtocolConfig {
|
|
66
|
+
enum Version {
|
|
67
|
+
// PROXY protocol version 1. Human readable format.
|
|
68
|
+
V1 = 0;
|
|
69
|
+
|
|
70
|
+
// PROXY protocol version 2. Binary format.
|
|
71
|
+
V2 = 1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details
|
|
75
|
+
Version version = 1;
|
|
76
|
+
|
|
77
|
+
// This config controls which TLVs can be passed to upstream if it is Proxy Protocol
|
|
78
|
+
// V2 header. If there is no setting for this field, no TLVs will be passed through.
|
|
79
|
+
ProxyProtocolPassThroughTLVs pass_through_tlvs = 2;
|
|
80
|
+
|
|
81
|
+
// This config allows additional TLVs to be included in the upstream PROXY protocol
|
|
82
|
+
// V2 header. Unlike ``pass_through_tlvs``, which passes TLVs from the downstream request,
|
|
83
|
+
// ``added_tlvs`` provides an extension mechanism for defining new TLVs that are included
|
|
84
|
+
// with the upstream request. These TLVs may not be present in the downstream request and
|
|
85
|
+
// can be defined at either the transport socket level or the host level to provide more
|
|
86
|
+
// granular control over the TLVs that are included in the upstream request.
|
|
87
|
+
//
|
|
88
|
+
// Host-level TLVs are specified in the ``metadata.typed_filter_metadata`` field under the
|
|
89
|
+
// ``envoy.transport_sockets.proxy_protocol`` namespace.
|
|
90
|
+
//
|
|
91
|
+
// .. literalinclude:: /_configs/repo/proxy_protocol.yaml
|
|
92
|
+
// :language: yaml
|
|
93
|
+
// :lines: 49-57
|
|
94
|
+
// :linenos:
|
|
95
|
+
// :lineno-start: 49
|
|
96
|
+
// :caption: :download:`proxy_protocol.yaml </_configs/repo/proxy_protocol.yaml>`
|
|
97
|
+
//
|
|
98
|
+
// **Precedence behavior**:
|
|
99
|
+
//
|
|
100
|
+
// - When a TLV is defined at both the host level and the transport socket level, the value
|
|
101
|
+
// from the host level configuration takes precedence. This allows users to define default TLVs
|
|
102
|
+
// at the transport socket level and override them at the host level.
|
|
103
|
+
// - Any TLV defined in the ``pass_through_tlvs`` field will be overridden by either the host-level
|
|
104
|
+
// or transport socket-level TLV.
|
|
105
|
+
//
|
|
106
|
+
// If there are multiple TLVs with the same type, only the TLVs from the highest precedence level
|
|
107
|
+
// will be used.
|
|
108
|
+
repeated TlvEntry added_tlvs = 3;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
message PerHostConfig {
|
|
112
|
+
// Enables per-host configuration for Proxy Protocol.
|
|
113
|
+
repeated TlvEntry added_tlvs = 1;
|
|
114
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.core.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/config/core/v3/address.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 = "ResolverProto";
|
|
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: Resolver]
|
|
17
|
+
|
|
18
|
+
// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
|
|
19
|
+
message DnsResolverOptions {
|
|
20
|
+
// Use TCP for all DNS queries instead of the default protocol UDP.
|
|
21
|
+
bool use_tcp_for_dns_lookups = 1;
|
|
22
|
+
|
|
23
|
+
// Do not use the default search domains; only query hostnames as-is or as aliases.
|
|
24
|
+
bool no_default_search_domain = 2;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// DNS resolution configuration which includes the underlying dns resolver addresses and options.
|
|
28
|
+
message DnsResolutionConfig {
|
|
29
|
+
// A list of dns resolver addresses. If specified, the DNS client library will perform resolution
|
|
30
|
+
// via the underlying DNS resolvers. Otherwise, the default system resolvers
|
|
31
|
+
// (e.g., /etc/resolv.conf) will be used.
|
|
32
|
+
repeated Address resolvers = 1 [(validate.rules).repeated = {min_items: 1}];
|
|
33
|
+
|
|
34
|
+
// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
|
|
35
|
+
DnsResolverOptions dns_resolver_options = 2;
|
|
36
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.core.v3;
|
|
4
|
+
|
|
5
|
+
import "google/protobuf/wrappers.proto";
|
|
6
|
+
|
|
7
|
+
import "udpa/annotations/status.proto";
|
|
8
|
+
|
|
9
|
+
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
|
10
|
+
option java_outer_classname = "SocketCmsgHeadersProto";
|
|
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: Socket CMSG headers]
|
|
16
|
+
|
|
17
|
+
// Configuration for socket cmsg headers.
|
|
18
|
+
// See `:ref:CMSG <https://man7.org/linux/man-pages/man3/cmsg.3.html>`_ for further information.
|
|
19
|
+
message SocketCmsgHeaders {
|
|
20
|
+
// cmsg level. Default is unset.
|
|
21
|
+
google.protobuf.UInt32Value level = 1;
|
|
22
|
+
|
|
23
|
+
// cmsg type. Default is unset.
|
|
24
|
+
google.protobuf.UInt32Value type = 2;
|
|
25
|
+
|
|
26
|
+
// Expected size of cmsg value. Default is zero.
|
|
27
|
+
uint32 expected_size = 3;
|
|
28
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
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 = "SocketOptionProto";
|
|
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: Socket option]
|
|
16
|
+
|
|
17
|
+
// Generic socket option message. This would be used to set socket options that
|
|
18
|
+
// might not exist in upstream kernels or precompiled Envoy binaries.
|
|
19
|
+
//
|
|
20
|
+
// For example:
|
|
21
|
+
//
|
|
22
|
+
// .. code-block:: json
|
|
23
|
+
//
|
|
24
|
+
// {
|
|
25
|
+
// "description": "support tcp keep alive",
|
|
26
|
+
// "state": 0,
|
|
27
|
+
// "level": 1,
|
|
28
|
+
// "name": 9,
|
|
29
|
+
// "int_value": 1,
|
|
30
|
+
// }
|
|
31
|
+
//
|
|
32
|
+
// 1 means SOL_SOCKET and 9 means SO_KEEPALIVE on Linux.
|
|
33
|
+
// With the above configuration, `TCP Keep-Alives <https://www.freesoft.org/CIE/RFC/1122/114.htm>`_
|
|
34
|
+
// can be enabled in socket with Linux, which can be used in
|
|
35
|
+
// :ref:`listener's<envoy_v3_api_field_config.listener.v3.Listener.socket_options>` or
|
|
36
|
+
// :ref:`admin's <envoy_v3_api_field_config.bootstrap.v3.Admin.socket_options>` socket_options etc.
|
|
37
|
+
//
|
|
38
|
+
// It should be noted that the name or level may have different values on different platforms.
|
|
39
|
+
// [#next-free-field: 8]
|
|
40
|
+
message SocketOption {
|
|
41
|
+
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.SocketOption";
|
|
42
|
+
|
|
43
|
+
enum SocketState {
|
|
44
|
+
// Socket options are applied after socket creation but before binding the socket to a port
|
|
45
|
+
STATE_PREBIND = 0;
|
|
46
|
+
|
|
47
|
+
// Socket options are applied after binding the socket to a port but before calling listen()
|
|
48
|
+
STATE_BOUND = 1;
|
|
49
|
+
|
|
50
|
+
// Socket options are applied after calling listen()
|
|
51
|
+
STATE_LISTENING = 2;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// The `socket type <https://linux.die.net/man/2/socket>`_ to apply the socket option to.
|
|
55
|
+
// Only one field should be set. If multiple fields are set, the precedence order will determine
|
|
56
|
+
// the selected one. If none of the fields is set, the socket option will be applied to all socket types.
|
|
57
|
+
//
|
|
58
|
+
// For example:
|
|
59
|
+
// If :ref:`stream <envoy_v3_api_field_config.core.v3.SocketOption.SocketType.stream>` is set,
|
|
60
|
+
// it takes precedence over :ref:`datagram <envoy_v3_api_field_config.core.v3.SocketOption.SocketType.datagram>`.
|
|
61
|
+
message SocketType {
|
|
62
|
+
// The stream socket type.
|
|
63
|
+
message Stream {
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// The datagram socket type.
|
|
67
|
+
message Datagram {
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Apply the socket option to the stream socket type.
|
|
71
|
+
Stream stream = 1;
|
|
72
|
+
|
|
73
|
+
// Apply the socket option to the datagram socket type.
|
|
74
|
+
Datagram datagram = 2;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// An optional name to give this socket option for debugging, etc.
|
|
78
|
+
// Uniqueness is not required and no special meaning is assumed.
|
|
79
|
+
string description = 1;
|
|
80
|
+
|
|
81
|
+
// Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP
|
|
82
|
+
int64 level = 2;
|
|
83
|
+
|
|
84
|
+
// The numeric name as passed to setsockopt
|
|
85
|
+
int64 name = 3;
|
|
86
|
+
|
|
87
|
+
oneof value {
|
|
88
|
+
option (validate.required) = true;
|
|
89
|
+
|
|
90
|
+
// Because many sockopts take an int value.
|
|
91
|
+
int64 int_value = 4;
|
|
92
|
+
|
|
93
|
+
// Otherwise it's a byte buffer.
|
|
94
|
+
bytes buf_value = 5;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// The state in which the option will be applied. When used in BindConfig
|
|
98
|
+
// STATE_PREBIND is currently the only valid value.
|
|
99
|
+
SocketState state = 6 [(validate.rules).enum = {defined_only: true}];
|
|
100
|
+
|
|
101
|
+
// Apply the socket option to the specified `socket type <https://linux.die.net/man/2/socket>`_.
|
|
102
|
+
// If not specified, the socket option will be applied to all socket types.
|
|
103
|
+
SocketType type = 7;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
message SocketOptionsOverride {
|
|
107
|
+
repeated SocketOption socket_options = 1;
|
|
108
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
|
|
8
|
+
import "google/protobuf/struct.proto";
|
|
9
|
+
|
|
10
|
+
import "envoy/annotations/deprecation.proto";
|
|
11
|
+
import "udpa/annotations/status.proto";
|
|
12
|
+
import "validate/validate.proto";
|
|
13
|
+
|
|
14
|
+
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
|
15
|
+
option java_outer_classname = "SubstitutionFormatStringProto";
|
|
16
|
+
option java_multiple_files = true;
|
|
17
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
|
18
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
19
|
+
|
|
20
|
+
// [#protodoc-title: Substitution format string]
|
|
21
|
+
|
|
22
|
+
// Optional configuration options to be used with json_format.
|
|
23
|
+
message JsonFormatOptions {
|
|
24
|
+
// The output JSON string properties will be sorted.
|
|
25
|
+
//
|
|
26
|
+
// .. note::
|
|
27
|
+
// As the properties are always sorted, this option has no effect and is deprecated.
|
|
28
|
+
//
|
|
29
|
+
bool sort_properties = 1
|
|
30
|
+
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Configuration to use multiple :ref:`command operators <config_access_log_command_operators>`
|
|
34
|
+
// to generate a new string in either plain text or JSON format.
|
|
35
|
+
// [#next-free-field: 8]
|
|
36
|
+
message SubstitutionFormatString {
|
|
37
|
+
oneof format {
|
|
38
|
+
option (validate.required) = true;
|
|
39
|
+
|
|
40
|
+
// Specify a format with command operators to form a text string.
|
|
41
|
+
// Its details is described in :ref:`format string<config_access_log_format_strings>`.
|
|
42
|
+
//
|
|
43
|
+
// For example, setting ``text_format`` like below,
|
|
44
|
+
//
|
|
45
|
+
// .. validated-code-block:: yaml
|
|
46
|
+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
|
|
47
|
+
//
|
|
48
|
+
// text_format: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n"
|
|
49
|
+
//
|
|
50
|
+
// generates plain text similar to:
|
|
51
|
+
//
|
|
52
|
+
// .. code-block:: text
|
|
53
|
+
//
|
|
54
|
+
// upstream connect error:503:path=/foo
|
|
55
|
+
//
|
|
56
|
+
// Deprecated in favor of :ref:`text_format_source <envoy_v3_api_field_config.core.v3.SubstitutionFormatString.text_format_source>`. To migrate text format strings, use the :ref:`inline_string <envoy_v3_api_field_config.core.v3.DataSource.inline_string>` field.
|
|
57
|
+
string text_format = 1
|
|
58
|
+
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
|
59
|
+
|
|
60
|
+
// Specify a format with command operators to form a JSON string.
|
|
61
|
+
// Its details is described in :ref:`format dictionary<config_access_log_format_dictionaries>`.
|
|
62
|
+
// Values are rendered as strings, numbers, or boolean values as appropriate.
|
|
63
|
+
// Nested JSON objects may be produced by some command operators (e.g. FILTER_STATE or DYNAMIC_METADATA).
|
|
64
|
+
// See the documentation for a specific command operator for details.
|
|
65
|
+
//
|
|
66
|
+
// .. validated-code-block:: yaml
|
|
67
|
+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
|
|
68
|
+
//
|
|
69
|
+
// json_format:
|
|
70
|
+
// status: "%RESPONSE_CODE%"
|
|
71
|
+
// message: "%LOCAL_REPLY_BODY%"
|
|
72
|
+
//
|
|
73
|
+
// The following JSON object would be created:
|
|
74
|
+
//
|
|
75
|
+
// .. code-block:: json
|
|
76
|
+
//
|
|
77
|
+
// {
|
|
78
|
+
// "status": 500,
|
|
79
|
+
// "message": "My error message"
|
|
80
|
+
// }
|
|
81
|
+
//
|
|
82
|
+
google.protobuf.Struct json_format = 2 [(validate.rules).message = {required: true}];
|
|
83
|
+
|
|
84
|
+
// Specify a format with command operators to form a text string.
|
|
85
|
+
// Its details is described in :ref:`format string<config_access_log_format_strings>`.
|
|
86
|
+
//
|
|
87
|
+
// For example, setting ``text_format`` like below,
|
|
88
|
+
//
|
|
89
|
+
// .. validated-code-block:: yaml
|
|
90
|
+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
|
|
91
|
+
//
|
|
92
|
+
// text_format_source:
|
|
93
|
+
// inline_string: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n"
|
|
94
|
+
//
|
|
95
|
+
// generates plain text similar to:
|
|
96
|
+
//
|
|
97
|
+
// .. code-block:: text
|
|
98
|
+
//
|
|
99
|
+
// upstream connect error:503:path=/foo
|
|
100
|
+
//
|
|
101
|
+
DataSource text_format_source = 5;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// If set to true, when command operators are evaluated to null,
|
|
105
|
+
//
|
|
106
|
+
// * for ``text_format``, the output of the empty operator is changed from ``-`` to an
|
|
107
|
+
// empty string, so that empty values are omitted entirely.
|
|
108
|
+
// * for ``json_format`` the keys with null values are omitted in the output structure.
|
|
109
|
+
//
|
|
110
|
+
// .. note::
|
|
111
|
+
// This option does not work perfectly with ``json_format`` as keys with ``null`` values
|
|
112
|
+
// will still be included in the output. See https://github.com/envoyproxy/envoy/issues/37941
|
|
113
|
+
// for more details.
|
|
114
|
+
//
|
|
115
|
+
bool omit_empty_values = 3;
|
|
116
|
+
|
|
117
|
+
// Specify a ``content_type`` field.
|
|
118
|
+
// If this field is not set then ``text/plain`` is used for ``text_format`` and
|
|
119
|
+
// ``application/json`` is used for ``json_format``.
|
|
120
|
+
//
|
|
121
|
+
// .. validated-code-block:: yaml
|
|
122
|
+
// :type-name: envoy.config.core.v3.SubstitutionFormatString
|
|
123
|
+
//
|
|
124
|
+
// content_type: "text/html; charset=UTF-8"
|
|
125
|
+
//
|
|
126
|
+
string content_type = 4
|
|
127
|
+
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
|
128
|
+
|
|
129
|
+
// Specifies a collection of Formatter plugins that can be called from the access log configuration.
|
|
130
|
+
// See the formatters extensions documentation for details.
|
|
131
|
+
// [#extension-category: envoy.formatter]
|
|
132
|
+
repeated TypedExtensionConfig formatters = 6;
|
|
133
|
+
|
|
134
|
+
// If json_format is used, the options will be applied to the output JSON string.
|
|
135
|
+
JsonFormatOptions json_format_options = 7;
|
|
136
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.core.v3;
|
|
4
|
+
|
|
5
|
+
import "google/protobuf/wrappers.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 = "UdpSocketConfigProto";
|
|
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: UDP socket config]
|
|
17
|
+
|
|
18
|
+
// Generic UDP socket configuration.
|
|
19
|
+
message UdpSocketConfig {
|
|
20
|
+
// The maximum size of received UDP datagrams. Using a larger size will cause Envoy to allocate
|
|
21
|
+
// more memory per socket. Received datagrams above this size will be dropped. If not set
|
|
22
|
+
// defaults to 1500 bytes.
|
|
23
|
+
google.protobuf.UInt64Value max_rx_datagram_size = 1
|
|
24
|
+
[(validate.rules).uint64 = {lt: 65536 gt: 0}];
|
|
25
|
+
|
|
26
|
+
// Configures whether Generic Receive Offload (GRO)
|
|
27
|
+
// <https://en.wikipedia.org/wiki/Large_receive_offload>_ is preferred when reading from the
|
|
28
|
+
// UDP socket. The default is context dependent and is documented where UdpSocketConfig is used.
|
|
29
|
+
// This option affects performance but not functionality. If GRO is not supported by the operating
|
|
30
|
+
// system, non-GRO receive will be used.
|
|
31
|
+
google.protobuf.BoolValue prefer_gro = 2;
|
|
32
|
+
}
|
|
@@ -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/config/core/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,137 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.endpoint.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/config/endpoint/v3/endpoint_components.proto";
|
|
6
|
+
import "envoy/type/v3/percent.proto";
|
|
7
|
+
|
|
8
|
+
import "google/protobuf/duration.proto";
|
|
9
|
+
import "google/protobuf/wrappers.proto";
|
|
10
|
+
|
|
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.endpoint.v3";
|
|
16
|
+
option java_outer_classname = "EndpointProto";
|
|
17
|
+
option java_multiple_files = true;
|
|
18
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
|
|
19
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
20
|
+
|
|
21
|
+
// [#protodoc-title: Endpoint configuration]
|
|
22
|
+
// Endpoint discovery :ref:`architecture overview <arch_overview_service_discovery_types_eds>`
|
|
23
|
+
|
|
24
|
+
// Each route from RDS will map to a single cluster or traffic split across
|
|
25
|
+
// clusters using weights expressed in the RDS WeightedCluster.
|
|
26
|
+
//
|
|
27
|
+
// With EDS, each cluster is treated independently from a LB perspective, with
|
|
28
|
+
// LB taking place between the Localities within a cluster and at a finer
|
|
29
|
+
// granularity between the hosts within a locality. The percentage of traffic
|
|
30
|
+
// for each endpoint is determined by both its load_balancing_weight, and the
|
|
31
|
+
// load_balancing_weight of its locality. First, a locality will be selected,
|
|
32
|
+
// then an endpoint within that locality will be chose based on its weight.
|
|
33
|
+
// [#next-free-field: 6]
|
|
34
|
+
message ClusterLoadAssignment {
|
|
35
|
+
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.ClusterLoadAssignment";
|
|
36
|
+
|
|
37
|
+
// Load balancing policy settings.
|
|
38
|
+
// [#next-free-field: 7]
|
|
39
|
+
message Policy {
|
|
40
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
41
|
+
"envoy.api.v2.ClusterLoadAssignment.Policy";
|
|
42
|
+
|
|
43
|
+
message DropOverload {
|
|
44
|
+
option (udpa.annotations.versioning).previous_message_type =
|
|
45
|
+
"envoy.api.v2.ClusterLoadAssignment.Policy.DropOverload";
|
|
46
|
+
|
|
47
|
+
// Identifier for the policy specifying the drop.
|
|
48
|
+
string category = 1 [(validate.rules).string = {min_len: 1}];
|
|
49
|
+
|
|
50
|
+
// Percentage of traffic that should be dropped for the category.
|
|
51
|
+
type.v3.FractionalPercent drop_percentage = 2;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
reserved 1, 5;
|
|
55
|
+
|
|
56
|
+
reserved "disable_overprovisioning";
|
|
57
|
+
|
|
58
|
+
// Action to trim the overall incoming traffic to protect the upstream
|
|
59
|
+
// hosts. This action allows protection in case the hosts are unable to
|
|
60
|
+
// recover from an outage, or unable to autoscale or unable to handle
|
|
61
|
+
// incoming traffic volume for any reason.
|
|
62
|
+
//
|
|
63
|
+
// At the client each category is applied one after the other to generate
|
|
64
|
+
// the 'actual' drop percentage on all outgoing traffic. For example:
|
|
65
|
+
//
|
|
66
|
+
// .. code-block:: json
|
|
67
|
+
//
|
|
68
|
+
// { "drop_overloads": [
|
|
69
|
+
// { "category": "throttle", "drop_percentage": 60 }
|
|
70
|
+
// { "category": "lb", "drop_percentage": 50 }
|
|
71
|
+
// ]}
|
|
72
|
+
//
|
|
73
|
+
// The actual drop percentages applied to the traffic at the clients will be
|
|
74
|
+
// "throttle"_drop = 60%
|
|
75
|
+
// "lb"_drop = 20% // 50% of the remaining 'actual' load, which is 40%.
|
|
76
|
+
// actual_outgoing_load = 20% // remaining after applying all categories.
|
|
77
|
+
//
|
|
78
|
+
// Envoy supports only one element and will NACK if more than one element is present.
|
|
79
|
+
// Other xDS-capable data planes will not necessarily have this limitation.
|
|
80
|
+
//
|
|
81
|
+
// In Envoy, this ``drop_overloads`` config can be overridden by a runtime key
|
|
82
|
+
// "load_balancing_policy.drop_overload_limit" setting. This runtime key can be set to
|
|
83
|
+
// any integer number between 0 and 100. 0 means drop 0%. 100 means drop 100%.
|
|
84
|
+
// When both ``drop_overloads`` config and "load_balancing_policy.drop_overload_limit"
|
|
85
|
+
// setting are in place, the min of these two wins.
|
|
86
|
+
repeated DropOverload drop_overloads = 2;
|
|
87
|
+
|
|
88
|
+
// Priority levels and localities are considered overprovisioned with this
|
|
89
|
+
// factor (in percentage). This means that we don't consider a priority
|
|
90
|
+
// level or locality unhealthy until the fraction of healthy hosts
|
|
91
|
+
// multiplied by the overprovisioning factor drops below 100.
|
|
92
|
+
// With the default value 140(1.4), Envoy doesn't consider a priority level
|
|
93
|
+
// or a locality unhealthy until their percentage of healthy hosts drops
|
|
94
|
+
// below 72%. For example:
|
|
95
|
+
//
|
|
96
|
+
// .. code-block:: json
|
|
97
|
+
//
|
|
98
|
+
// { "overprovisioning_factor": 100 }
|
|
99
|
+
//
|
|
100
|
+
// Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
|
|
101
|
+
// :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
|
|
102
|
+
google.protobuf.UInt32Value overprovisioning_factor = 3 [(validate.rules).uint32 = {gt: 0}];
|
|
103
|
+
|
|
104
|
+
// The max time until which the endpoints from this assignment can be used.
|
|
105
|
+
// If no new assignments are received before this time expires the endpoints
|
|
106
|
+
// are considered stale and should be marked unhealthy.
|
|
107
|
+
// Defaults to 0 which means endpoints never go stale.
|
|
108
|
+
google.protobuf.Duration endpoint_stale_after = 4 [(validate.rules).duration = {gt {}}];
|
|
109
|
+
|
|
110
|
+
// If true, use the :ref:`load balancing weight
|
|
111
|
+
// <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.load_balancing_weight>` of healthy and unhealthy
|
|
112
|
+
// hosts to determine the health of the priority level. If false, use the number of healthy and unhealthy hosts
|
|
113
|
+
// to determine the health of the priority level, or in other words assume each host has a weight of 1 for
|
|
114
|
+
// this calculation.
|
|
115
|
+
//
|
|
116
|
+
// .. note::
|
|
117
|
+
// This is not currently implemented for
|
|
118
|
+
// :ref:`locality weighted load balancing <arch_overview_load_balancing_locality_weighted_lb>`.
|
|
119
|
+
bool weighted_priority_health = 6;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Name of the cluster. This will be the :ref:`service_name
|
|
123
|
+
// <envoy_v3_api_field_config.cluster.v3.Cluster.EdsClusterConfig.service_name>` value if specified
|
|
124
|
+
// in the cluster :ref:`EdsClusterConfig
|
|
125
|
+
// <envoy_v3_api_msg_config.cluster.v3.Cluster.EdsClusterConfig>`.
|
|
126
|
+
string cluster_name = 1 [(validate.rules).string = {min_len: 1}];
|
|
127
|
+
|
|
128
|
+
// List of endpoints to load balance to.
|
|
129
|
+
repeated LocalityLbEndpoints endpoints = 2;
|
|
130
|
+
|
|
131
|
+
// Map of named endpoints that can be referenced in LocalityLbEndpoints.
|
|
132
|
+
// [#not-implemented-hide:]
|
|
133
|
+
map<string, Endpoint> named_endpoints = 5;
|
|
134
|
+
|
|
135
|
+
// Load balancing policy settings.
|
|
136
|
+
Policy policy = 4;
|
|
137
|
+
}
|