.. _envoy_v3_api_file_envoy/config/endpoint/v3/endpoint.proto:

Endpoint configuration (proto)
==============================


Endpoint discovery :ref:`architecture overview <arch_overview_service_discovery_types_eds>`




.. _envoy_v3_api_msg_config.endpoint.v3.ClusterLoadAssignment:

config.endpoint.v3.ClusterLoadAssignment
----------------------------------------


:repo:`[config.endpoint.v3.ClusterLoadAssignment proto] <api/envoy/config/endpoint/v3/endpoint.proto#L33>`

Each route from RDS will map to a single cluster or traffic split across
clusters using weights expressed in the RDS WeightedCluster.

With EDS, each cluster is treated independently from a LB perspective, with
LB taking place between the Localities within a cluster and at a finer
granularity between the hosts within a locality. The percentage of traffic
for each endpoint is determined by both its load_balancing_weight, and the
load_balancing_weight of its locality. First, a locality will be selected,
then an endpoint within that locality will be chose based on its weight.



.. code-block:: json
  :force:

  {
    "cluster_name": ...,
    "endpoints": [],
    "policy": {...}
  }

.. _envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.cluster_name:


cluster_name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) Name of the cluster. This will be the :ref:`service_name
  <envoy_v3_api_field_config.cluster.v3.Cluster.EdsClusterConfig.service_name>` value if specified
  in the cluster :ref:`EdsClusterConfig
  <envoy_v3_api_msg_config.cluster.v3.Cluster.EdsClusterConfig>`.


.. _envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.endpoints:


endpoints
  (**repeated** :ref:`config.endpoint.v3.LocalityLbEndpoints <envoy_v3_api_msg_config.endpoint.v3.LocalityLbEndpoints>`) List of endpoints to load balance to.


.. _envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.policy:


policy
  (:ref:`config.endpoint.v3.ClusterLoadAssignment.Policy <envoy_v3_api_msg_config.endpoint.v3.ClusterLoadAssignment.Policy>`) Load balancing policy settings.


.. _envoy_v3_api_msg_config.endpoint.v3.ClusterLoadAssignment.Policy:

config.endpoint.v3.ClusterLoadAssignment.Policy
-----------------------------------------------


:repo:`[config.endpoint.v3.ClusterLoadAssignment.Policy proto] <api/envoy/config/endpoint/v3/endpoint.proto#L38>`

Load balancing policy settings.



.. code-block:: json
  :force:

  {
    "overprovisioning_factor": {...},
    "endpoint_stale_after": {...},
    "weighted_priority_health": ...
  }

.. _envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.Policy.overprovisioning_factor:


overprovisioning_factor
  (`UInt32Value <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#uint32value>`_) Priority levels and localities are considered overprovisioned with this
  factor (in percentage). This means that we don't consider a priority
  level or locality unhealthy until the fraction of healthy hosts
  multiplied by the overprovisioning factor drops below 100.
  With the default value 140(1.4), Envoy doesn't consider a priority level
  or a locality unhealthy until their percentage of healthy hosts drops
  below 72%. For example:

  .. code-block:: json

   { "overprovisioning_factor": 100 }

  Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
  :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.


.. _envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.Policy.endpoint_stale_after:


endpoint_stale_after
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) The max time until which the endpoints from this assignment can be used.
  If no new assignments are received before this time expires the endpoints
  are considered stale and should be marked unhealthy.
  Defaults to 0 which means endpoints never go stale.


.. _envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.Policy.weighted_priority_health:


weighted_priority_health
  (`bool <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) If true, use the :ref:`load balancing weight
  <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.load_balancing_weight>` of healthy and unhealthy
  hosts to determine the health of the priority level. If false, use the number of healthy and unhealthy hosts
  to determine the health of the priority level, or in other words assume each host has a weight of 1 for
  this calculation.

  Note: this is not currently implemented for
  :ref:`locality weighted load balancing <arch_overview_load_balancing_locality_weighted_lb>`.