-
Notifications
You must be signed in to change notification settings - Fork 689
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
Replace GRPC state of world updates with ADS Delta #6806
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Steve Kriss <[email protected]>
Signed-off-by: Tero Saarni <[email protected]>
5a12a94
to
fab3db3
Compare
Signed-off-by: David Sale <[email protected]>
fab3db3
to
7cea2fd
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #6806 +/- ##
==========================================
- Coverage 81.05% 81.05% -0.01%
==========================================
Files 133 133
Lines 20026 20024 -2
==========================================
- Hits 16232 16230 -2
Misses 3500 3500
Partials 294 294
|
Signed-off-by: David Sale <[email protected]>
16b8020
to
e6d2d26
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the investigation and work on this @saley89
I agree moving to Delta ADS is a very valuable improvement to Contour, however unfortunately we cannot immediately switch over to a new gRPC variant for a few reasons:
- Currently in SOTW xDS, Contour treats all Envoy instances as the same "node" (see here:
contour/internal/xdscache/v3/snapshot.go
Lines 46 to 47 in bc301a1
defaultCache = envoy_cache_v3.NewSnapshotCache(false, &contour_xds_v3.Hash, log.WithField("context", "defaultCache")) edsCache = envoy_cache_v3.NewSnapshotCache(false, &contour_xds_v3.Hash, log.WithField("context", "edsCache")) - To protect our OSS users with running clusters that upgrade to a release with Delta ADS support, in the case of bugs etc. this needs to be a more gradual rollout, i.e. add as a feature flagged or opt-in feature, add docs on how to enable, etc. it cannot become the default immediately
- we'll need to have some e2e upgrade testing to make sure upgrading to Delta ADS works as expected
I started some of the background refactor work to enable us to feature flag the various config sources here but other priorities took over at the time: #5523
Hi @sunjayBhatia that's great to hear. Originally I went down the line of what your PR achieves. I wanted to flag it such that GRPC remained the default but you could toggle ADS with Delta. I was really struggling to see how to pass any type of configuration flags down to the Your PR looks ideal, and sets the foundations I need to achieve what I wanted at the start. I'm thinking if we could get your PR into the main branch with just the default GRPC behavior, I could then rebase what I have done above and setup some options in there to toggle on the ADS Delta behavior. Do you think something like would be possible in the very near future? As described above our setup means without ADS Delta it simply can't support the scale of our cluster. |
The Contour project currently lacks enough contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to the #contour channel in the Kubernetes Slack |
For: #6266
This PR replaces the default mechanism of GRPC for a combination of Aggregated Discovery Service and Delta GRPC updates.
Findings
From a starting point of a running on a Kubernetes cluster using over 25000+
HttpProxy
resources we saw the following with standard GRPC:With the switch to ADS Delta_GRPC we now see the following in the same cluster:
In short, this update mechanism is incredibly fast and resource efficient when compared with standard GRPC, "state of the world" communication. Without moving to this setup, a large scale cluster running many
HttpProxy
is simply not viable and has been noted in other issues (see #6743 - we believe this to be a side effect when running many proxies and we don't see this behaviour in our ADS Delta_GRPC version).Changes
The bootstrap code for setting the default
dynamic_resources
configuration has been setup to specify ADS as per the documentation as follows:And then each endpoint created for EDS is configured as follows: