...
1syntax = "proto3";
2
3package envoy.config.endpoint.v3;
4
5import "envoy/config/core/v3/address.proto";
6import "envoy/config/core/v3/base.proto";
7import "envoy/config/core/v3/health_check.proto";
8
9import "google/protobuf/wrappers.proto";
10
11import "udpa/annotations/status.proto";
12import "udpa/annotations/versioning.proto";
13import "validate/validate.proto";
14
15option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
16option java_outer_classname = "EndpointComponentsProto";
17option java_multiple_files = true;
18option (udpa.annotations.file_status).package_version_status = ACTIVE;
19
20// [#protodoc-title: Endpoints]
21
22// Upstream host identifier.
23message Endpoint {
24 option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.Endpoint";
25
26 // The optional health check configuration.
27 message HealthCheckConfig {
28 option (udpa.annotations.versioning).previous_message_type =
29 "envoy.api.v2.endpoint.Endpoint.HealthCheckConfig";
30
31 // Optional alternative health check port value.
32 //
33 // By default the health check address port of an upstream host is the same
34 // as the host's serving address port. This provides an alternative health
35 // check port. Setting this with a non-zero value allows an upstream host
36 // to have different health check address port.
37 uint32 port_value = 1 [(validate.rules).uint32 = {lte: 65535}];
38
39 // By default, the host header for L7 health checks is controlled by cluster level configuration
40 // (see: :ref:`host <envoy_api_field_config.core.v3.HealthCheck.HttpHealthCheck.host>` and
41 // :ref:`authority <envoy_api_field_config.core.v3.HealthCheck.GrpcHealthCheck.authority>`). Setting this
42 // to a non-empty value allows overriding the cluster level configuration for a specific
43 // endpoint.
44 string hostname = 2;
45 }
46
47 // The upstream host address.
48 //
49 // .. attention::
50 //
51 // The form of host address depends on the given cluster type. For STATIC or EDS,
52 // it is expected to be a direct IP address (or something resolvable by the
53 // specified :ref:`resolver <envoy_api_field_config.core.v3.SocketAddress.resolver_name>`
54 // in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
55 // and will be resolved via DNS.
56 core.v3.Address address = 1;
57
58 // The optional health check configuration is used as configuration for the
59 // health checker to contact the health checked host.
60 //
61 // .. attention::
62 //
63 // This takes into effect only for upstream clusters with
64 // :ref:`active health checking <arch_overview_health_checking>` enabled.
65 HealthCheckConfig health_check_config = 2;
66
67 // The hostname associated with this endpoint. This hostname is not used for routing or address
68 // resolution. If provided, it will be associated with the endpoint, and can be used for features
69 // that require a hostname, like
70 // :ref:`auto_host_rewrite <envoy_api_field_config.route.v3.RouteAction.auto_host_rewrite>`.
71 string hostname = 3;
72}
73
74// An Endpoint that Envoy can route traffic to.
75// [#next-free-field: 6]
76message LbEndpoint {
77 option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.LbEndpoint";
78
79 // Upstream host identifier or a named reference.
80 oneof host_identifier {
81 Endpoint endpoint = 1;
82
83 // [#not-implemented-hide:]
84 string endpoint_name = 5;
85 }
86
87 // Optional health status when known and supplied by EDS server.
88 core.v3.HealthStatus health_status = 2;
89
90 // The endpoint metadata specifies values that may be used by the load
91 // balancer to select endpoints in a cluster for a given request. The filter
92 // name should be specified as *envoy.lb*. An example boolean key-value pair
93 // is *canary*, providing the optional canary status of the upstream host.
94 // This may be matched against in a route's
95 // :ref:`RouteAction <envoy_api_msg_config.route.v3.RouteAction>` metadata_match field
96 // to subset the endpoints considered in cluster load balancing.
97 core.v3.Metadata metadata = 3;
98
99 // The optional load balancing weight of the upstream host; at least 1.
100 // Envoy uses the load balancing weight in some of the built in load
101 // balancers. The load balancing weight for an endpoint is divided by the sum
102 // of the weights of all endpoints in the endpoint's locality to produce a
103 // percentage of traffic for the endpoint. This percentage is then further
104 // weighted by the endpoint's locality's load balancing weight from
105 // LocalityLbEndpoints. If unspecified, each host is presumed to have equal
106 // weight in a locality. The sum of the weights of all endpoints in the
107 // endpoint's locality must not exceed uint32_t maximal value (4294967295).
108 google.protobuf.UInt32Value load_balancing_weight = 4 [(validate.rules).uint32 = {gte: 1}];
109}
110
111// A group of endpoints belonging to a Locality.
112// One can have multiple LocalityLbEndpoints for a locality, but this is
113// generally only done if the different groups need to have different load
114// balancing weights or different priorities.
115// [#next-free-field: 7]
116message LocalityLbEndpoints {
117 option (udpa.annotations.versioning).previous_message_type =
118 "envoy.api.v2.endpoint.LocalityLbEndpoints";
119
120 // Identifies location of where the upstream hosts run.
121 core.v3.Locality locality = 1;
122
123 // The group of endpoints belonging to the locality specified.
124 repeated LbEndpoint lb_endpoints = 2;
125
126 // Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
127 // balancing weight for a locality is divided by the sum of the weights of all
128 // localities at the same priority level to produce the effective percentage
129 // of traffic for the locality. The sum of the weights of all localities at
130 // the same priority level must not exceed uint32_t maximal value (4294967295).
131 //
132 // Locality weights are only considered when :ref:`locality weighted load
133 // balancing <arch_overview_load_balancing_locality_weighted_lb>` is
134 // configured. These weights are ignored otherwise. If no weights are
135 // specified when locality weighted load balancing is enabled, the locality is
136 // assigned no load.
137 google.protobuf.UInt32Value load_balancing_weight = 3 [(validate.rules).uint32 = {gte: 1}];
138
139 // Optional: the priority for this LocalityLbEndpoints. If unspecified this will
140 // default to the highest priority (0).
141 //
142 // Under usual circumstances, Envoy will only select endpoints for the highest
143 // priority (0). In the event all endpoints for a particular priority are
144 // unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
145 // next highest priority group.
146 //
147 // Priorities should range from 0 (highest) to N (lowest) without skipping.
148 uint32 priority = 5 [(validate.rules).uint32 = {lte: 128}];
149
150 // Optional: Per locality proximity value which indicates how close this
151 // locality is from the source locality. This value only provides ordering
152 // information (lower the value, closer it is to the source locality).
153 // This will be consumed by load balancing schemes that need proximity order
154 // to determine where to route the requests.
155 // [#not-implemented-hide:]
156 google.protobuf.UInt32Value proximity = 6;
157}
View as plain text