Envoy Proxy · Schema
Envoy Proxy Endpoint
An Envoy Proxy Endpoint represents a single upstream host within a cluster that can receive proxied traffic. Endpoints are grouped into localities for zone-aware routing and are assigned load balancing weights, health status, and priority levels. The Endpoint Discovery Service (EDS) dynamically provides endpoint assignments to Envoy, enabling real-time updates as upstream hosts are added, removed, or change health state.
GatewaysProxies
Properties
| Name | Type | Description |
|---|---|---|
| cluster_name | string | The name of the cluster that these endpoints belong to. |
| endpoints | array | A list of endpoint groups organized by locality. |
| named_endpoints | object | A map of named endpoints that can be referenced by name in lb_endpoints. |
| policy | object | Load balancing policy settings for the endpoint group. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "envoy-proxy-endpoint.json",
"title": "Envoy Proxy Endpoint",
"description": "An Envoy Proxy Endpoint represents a single upstream host within a cluster that can receive proxied traffic. Endpoints are grouped into localities for zone-aware routing and are assigned load balancing weights, health status, and priority levels. The Endpoint Discovery Service (EDS) dynamically provides endpoint assignments to Envoy, enabling real-time updates as upstream hosts are added, removed, or change health state.",
"type": "object",
"properties": {
"cluster_name": {
"type": "string",
"description": "The name of the cluster that these endpoints belong to."
},
"endpoints": {
"type": "array",
"description": "A list of endpoint groups organized by locality.",
"items": {
"type": "object",
"properties": {
"locality": {
"type": "object",
"description": "The locality associated with this set of endpoints, used for zone-aware routing.",
"properties": {
"region": {
"type": "string",
"description": "The geographic region, such as us-east-1."
},
"zone": {
"type": "string",
"description": "The availability zone within the region, such as us-east-1a."
},
"sub_zone": {
"type": "string",
"description": "A further subdivision within the zone."
}
}
},
"lb_endpoints": {
"type": "array",
"description": "The list of individual endpoints in this locality.",
"items": {
"type": "object",
"properties": {
"endpoint": {
"type": "object",
"description": "The upstream endpoint address.",
"properties": {
"address": {
"type": "object",
"description": "The network address of the endpoint.",
"properties": {
"socket_address": {
"type": "object",
"description": "A TCP socket address.",
"properties": {
"address": {
"type": "string",
"description": "The IP address or hostname of the upstream host."
},
"port_value": {
"type": "integer",
"description": "The port number of the upstream host.",
"minimum": 0,
"maximum": 65535
},
"protocol": {
"type": "string",
"description": "The protocol for this socket address.",
"enum": ["TCP", "UDP"]
}
},
"required": ["address", "port_value"]
},
"pipe": {
"type": "object",
"description": "A Unix domain socket address.",
"properties": {
"path": {
"type": "string",
"description": "The Unix domain socket path."
},
"mode": {
"type": "integer",
"description": "The mode for the Unix domain socket."
}
},
"required": ["path"]
}
}
},
"health_check_config": {
"type": "object",
"description": "Optional health check configuration overrides for this endpoint.",
"properties": {
"port_value": {
"type": "integer",
"description": "An alternate port to use for health checking this endpoint.",
"minimum": 0,
"maximum": 65535
},
"hostname": {
"type": "string",
"description": "An alternate hostname to use for health checking."
}
}
},
"hostname": {
"type": "string",
"description": "The hostname of the endpoint, used for SNI matching and auto-host-rewrite."
}
}
},
"health_status": {
"type": "string",
"description": "The health status of the endpoint as determined by the management server or health checker.",
"enum": [
"UNKNOWN",
"HEALTHY",
"UNHEALTHY",
"DRAINING",
"TIMEOUT",
"DEGRADED"
]
},
"metadata": {
"type": "object",
"description": "Opaque metadata associated with the endpoint for use in load balancing and routing.",
"properties": {
"filter_metadata": {
"type": "object",
"description": "Metadata keyed by filter name.",
"additionalProperties": true
}
}
},
"load_balancing_weight": {
"type": "integer",
"description": "The load balancing weight of this endpoint. Endpoints with higher weights receive proportionally more traffic.",
"minimum": 1,
"maximum": 128
}
}
}
},
"load_balancing_weight": {
"type": "integer",
"description": "The load balancing weight for this entire locality. Used for inter-locality traffic distribution.",
"minimum": 0
},
"priority": {
"type": "integer",
"description": "The priority of this locality. Envoy will route to higher priority localities first, falling back to lower priority when higher priority localities become unavailable.",
"minimum": 0
}
}
}
},
"named_endpoints": {
"type": "object",
"description": "A map of named endpoints that can be referenced by name in lb_endpoints.",
"additionalProperties": {
"type": "object",
"properties": {
"address": {
"type": "object",
"properties": {
"socket_address": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"port_value": {
"type": "integer"
}
}
}
}
}
}
}
},
"policy": {
"type": "object",
"description": "Load balancing policy settings for the endpoint group.",
"properties": {
"overprovisioning_factor": {
"type": "integer",
"description": "Priority-level overprovisioning factor used to determine when to spread traffic to lower priority levels. Defaults to 140.",
"minimum": 0
},
"endpoint_stale_after": {
"type": "string",
"description": "Duration after which endpoints are considered stale if not refreshed via EDS."
},
"drop_overloads": {
"type": "array",
"description": "Configuration for dropping a percentage of traffic.",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Name of the drop category."
},
"drop_percentage": {
"type": "object",
"description": "The percentage of traffic to drop.",
"properties": {
"numerator": {
"type": "integer"
},
"denominator": {
"type": "string",
"enum": ["HUNDRED", "TEN_THOUSAND", "MILLION"]
}
}
}
}
}
}
}
}
},
"required": ["cluster_name"]
}