envoyproxy/envoy

add support for depending on server state == "LIVE" In healthcheck filter

Open

#13,118 opened on Sep 15, 2020

View on GitHub
 (1 comment) (0 reactions) (0 assignees)C++ (5,373 forks)batch import
area/health_checkinghelp wanted

Repository metrics

Stars
 (27,997 stars)
PR merge metrics
 (Avg merge 8d) (378 merged PRs in 30d)

Description

Title: add support for depending on server state == "LIVE" In healthcheck filter

For context, we use the healthcheck filter configured to depend on the health of the application the Envoy sidecar accompanies. This lets the app see health checks on a regular interval and the envoy filter handles the flood of active health checking.

We ran into an issue (which I'm still debugging) where the clusters and listeners loaded, so Envoy started reporting healthy, but its ingress route table was not loaded so all traffic received a 404 with the NoRouteFound response details. Ideally in this scenario the health check filter would have returned 5xx until the routes loaded AND the configured upstream clusters passed the health threshold.

I think it would make sense make the health check have an option for making health status also depend on the server state being "LIVE" (i.e. the same conditions that make /ready return 200 on the admin interface).

Contributor guide