-
Notifications
You must be signed in to change notification settings - Fork 690
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
internal/dag: add support for ExternalService clusters #2876
internal/dag: add support for ExternalService clusters #2876
Conversation
Draft PR to pick up code coverage data. Still to do - add feature tests and fix debug logging. |
6a1e207
to
dda1a07
Compare
dda1a07
to
cc36128
Compare
cc36128
to
73e4066
Compare
Codecov Report
@@ Coverage Diff @@
## main #2876 +/- ##
==========================================
+ Coverage 75.61% 75.86% +0.25%
==========================================
Files 80 81 +1
Lines 5933 6025 +92
==========================================
+ Hits 4486 4571 +85
- Misses 1356 1361 +5
- Partials 91 93 +2
|
73e4066
to
53fb2ce
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.
I'm not sure if you are ready for review or not @jpeach, your last comment was you were still working on tests, but I threw in some comments. =)
53fb2ce
to
0ea5d8e
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.
LGTM, with a couple of small changes. I'd like to see @stevesloka's things addressed, either with code changes or comments too, please.
544416f
to
03f6510
Compare
@stevesloka @youngnick Addressed all review feedback. |
102bacb
to
d26c448
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.
looks good to me pending other comments
d26c448
to
d949ef3
Compare
sorry, gave you a couple small merge conflicts to resolve |
d949ef3
to
f28ad9f
Compare
Refactor the ExtensionService `.Services` field so that we have enough information to build an EDS cluster load assignment. Dropping the use of the HTTPProxy `Service` type means that the API aligns more closely with the corresponding Envoy resources and we can build a single Envoy cluster that balances across all the configured Kubernetes services. This wasn't previously possible, since Envoy generally expects external services to be a single cluster and has no provision for balancing across multiple clusters in this part of its API. Add a new `dag.Processor` implementation to build ExtensionService objects in the DAG. These are root-level objects that generate Envoy cluster resources. The `.Services` field emits a `dag.ServiceCluster` object that generates an Envoy cluster load assignment resource to balance traffic within the cluster. This fixes projectcontour#2713. Signed-off-by: James Peach <jpeach@vmware.com>
f28ad9f
to
649e315
Compare
Refactor the ExtensionService
.Services
field so that we have enoughinformation to build an EDS cluster load assignment. Dropping the use of
the HTTPProxy
Service
type means that the API aligns more closely withthe corresponding Envoy resources and we can build a single Envoy cluster
that balances across all the configured Kubernetes services. This wasn't
previously possible, since Envoy generally expects external services to
be a single cluster and has no provision for balancing across multiple
clusters in this part of its API.
Add a new
dag.Processor
implementation to build ExtensionServiceobjects in the DAG. These are root-level objects that generate Envoy
cluster resources. The
.Services
field emits adag.ServiceCluster
object that generates an Envoy cluster load assignment resource to
balance traffic within the cluster.
This fixes #2713.
Signed-off-by: James Peach jpeach@vmware.com