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

kuma-cp: modify generic go-control-plane to always respond to EDS requests that are happening at cluster warming stage #331

Merged
merged 1 commit into from
Oct 11, 2019

Conversation

yskopets
Copy link
Contributor

Summary

  • modify generic go-control-plane to always respond to EDS requests that are happening at cluster warming stage

Context

We’ve run into an issue where envoy keeps updated cluster in a warming state for indefinite amount of time.

Such behaviour is explained in the Resource warming section of the xDS Protocol (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-warming):

Clusters and Listeners go through warming before they can serve requests. This process happens both during Envoy initialization and when the Cluster or Listener is updated. Warming of Cluster is completed only when a ClusterLoadAssignment response is supplied by management server. … Management server is expected to provide the EDS/RDS updates during warming. If management server does not provide EDS/RDS responses, Envoy will not initialize itself during the initialization phase and the updates sent via CDS/LDS will not take effect until EDS/RDS responses are supplied.

In our case, while Cluster definition is updated, endpoints do not change. That’s why go-control-plane-based control plane doesn’t send a response to EDS request.

Apparently, support for this use case is missing from go-control-plane.

@yskopets yskopets changed the base branch from feature/copy-xds-server to master October 11, 2019 17:17
…equests that are happening at cluster warming stage
@yskopets yskopets merged commit c6abfb8 into master Oct 11, 2019
@yskopets yskopets deleted the feature/cluster-warming branch October 23, 2019 09:55
jackkleeman referenced this pull request in monzo/go-control-plane Feb 28, 2020
When a cluster is warming, we will receive an endpoint request. If
endpoints haven't changed recently, then this request will look stale,
and currently we would just leave the watch open. Instead, it is
paramount that we respond immediately, otherwise the cluster will get
no endpoints.

This code is copied verbatim from https://github.com/Kong/kuma/pull/331.
Thanks to @yskopets.
jackkleeman referenced this pull request in monzo/go-control-plane Feb 28, 2020
When a cluster is warming, we will receive an endpoint request. If
endpoints haven't changed recently, then this request will look stale,
and currently we would just leave the watch open. Instead, it is
paramount that we respond immediately, otherwise the cluster will get
no endpoints.

This code is copied verbatim from https://github.com/Kong/kuma/pull/331.
Thanks to @yskopets.
jackkleeman referenced this pull request in monzo/go-control-plane Feb 28, 2020
When a cluster is warming, we will receive an endpoint request. If
endpoints haven't changed recently, then this request will look stale,
and currently we would just leave the watch open. Instead, it is
paramount that we respond immediately, otherwise the cluster will get
no endpoints.

This code is copied verbatim from https://github.com/Kong/kuma/pull/331.
Thanks to @yskopets.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants