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

Do not create clusters for unrelated services #298

Closed
davecheney opened this issue Mar 23, 2018 · 6 comments
Closed

Do not create clusters for unrelated services #298

davecheney opened this issue Mar 23, 2018 · 6 comments
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/feature Categorizes issue or PR as related to a new feature. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Milestone

Comments

@davecheney
Copy link
Contributor

Currently Contour creates CDS entries for any Service document visible via the API. This is a problem because a CDS entry a causes Envoy to open a new EDS gRPC stream. This inflates the number of connections to the xds_cluster and inflames issues like #291

We should filter Services to only those that are directly referenced by an active Ingress.

@davecheney davecheney added kind/feature Categorizes issue or PR as related to a new feature. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. labels Mar 23, 2018
@davecheney davecheney added this to the 0.5.0 milestone Mar 23, 2018
@stevesloka
Copy link
Member

I can work on this issue.

@davecheney
Copy link
Contributor Author

davecheney commented Mar 26, 2018 via email

@Lookyan
Copy link
Contributor

Lookyan commented Mar 31, 2018

I think we need to use our local cache slices to determine whether we need endpoints and clusters in envoy. So, we need to store all data about endpoints and ingresses in memory of contour (and it already does it). Otherwise, we can get a race condition when we get new ingress but we don't have any clusters and endpoints for it. Or we should query kube API then to retrieve needed information (besides k8s watchers).

@stevesloka if you don't have proximate plans to realize this feature I can try to implement it. Let me know if you already work on it.

@stevesloka
Copy link
Member

@Lookyan I did start a little bit but don't have it fully implemented. I was starting to wire in the SharedInformer since it already maintains the local cache, and allows us to better utilize the update methods and also doesn't require us to maintain the second cache in the translatorCache struct. My work is here: https://github.com/stevesloka/contour/tree/healthcheck

The secondary goal of this issue is to implement health checks since they are implemented via clusters, this means I think we should build a cluster per service per reference in ingress since multiple ingress objects could reference the same service and have differing health checks.

@davecheney
Copy link
Contributor Author

I appreciate your enthusiasm but please let’s wait until #291 is fixed.

My suspicion is the next blocker will be eds filtering the specific resource being watched (there is an issue, but on phone)

@davecheney
Copy link
Contributor Author

#291 is now addressed, but 0.5.0 is shipping in two weeks (and one of those weeks I will be on leave) so I am moving this to 0.6.

@davecheney davecheney added the help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. label Apr 5, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/feature Categorizes issue or PR as related to a new feature. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Projects
None yet
Development

No branches or pull requests

3 participants