Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change the exposed behavior of the service resolver Subsets.OnlyPassing flag #6171

Closed
rboyer opened this issue Jul 18, 2019 · 0 comments
Closed
Labels
theme/connect Anything related to Consul Connect, Service Mesh, Side Car Proxies
Milestone

Comments

@rboyer
Copy link
Member

rboyer commented Jul 18, 2019

In the 1.6.x beta we exposed a field named OnlyPassing when defining a service resolver subset:

OnlyPassing (bool: false) - Specifies the behavior of the resolver's health check filtering. If this is set to false, the results will include instances with checks in the passing as well as the warning states. If this is set to true, only instances with checks in the passing state will be returned.

This was carried over verbatim from the equivalent field on Prepared Queries.

The problem is that when rendering endpoints in an envoy cluster, we want to include all endpoints regardless of health and just label them with the appropriate health status. This lets envoy calculate percentages of healthy vs overall cluster sizes and trigger failover behavior.

We already do include all of the endpoints with the following logic:

  1. Service instances in a passing status in Consul become HEALTHY in Envoy.
  2. Service instances in a critical status in Consul become UNHEALTHY in Envoy.
  3. Service instances in a warning status in Consul become HEALTHY unless it's warning weight was set to 0.
  4. Consul service instance weights affect the Envoy load balancing weight for the endpoint.

The ultimate option we actually want is to give the user the ability to modify step 3 to consider warning as always being UNHEALTHY in envoy, rather than filtering out the results.

@rboyer rboyer added the theme/connect Anything related to Consul Connect, Service Mesh, Side Car Proxies label Jul 18, 2019
@rboyer rboyer added this to the 1.6.0-beta3 milestone Jul 18, 2019
rboyer added a commit that referenced this issue Jul 18, 2019
The main change is that we no longer filter service instances by health,
preferring instead to render all results down into EDS endpoints in
envoy and merely label the endpoints as HEALTHY or UNHEALTHY.

When OnlyPassing is set to true we will force consul checks in a
'warning' state to render as UNHEALTHY in envoy.

Fixes #6171
rboyer added a commit that referenced this issue Jul 24, 2019
The main change is that we no longer filter service instances by health,
preferring instead to render all results down into EDS endpoints in
envoy and merely label the endpoints as HEALTHY or UNHEALTHY.

When OnlyPassing is set to true we will force consul checks in a
'warning' state to render as UNHEALTHY in envoy.

Fixes #6171
rboyer added a commit that referenced this issue Jul 24, 2019
#6173)

The main change is that we no longer filter service instances by health,
preferring instead to render all results down into EDS endpoints in
envoy and merely label the endpoints as HEALTHY or UNHEALTHY.

When OnlyPassing is set to true we will force consul checks in a
'warning' state to render as UNHEALTHY in envoy.

Fixes #6171
@rboyer rboyer closed this as completed Jul 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
theme/connect Anything related to Consul Connect, Service Mesh, Side Car Proxies
Projects
None yet
Development

No branches or pull requests

1 participant