Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We add support for federated services to the destination controller by adding a new FederatedServiceWatcher. When the destination controller receives a
Get
request for a Service with themulticluster.linkerd.io/remote-discovery
and/or themulticluster.linkerd.io/local-discovery
annotations, it subscribes to the FederatedServiceWatcher instead of subscribing to the EndpointsWatcher directly. The FederatedServiceWatcher watches the federated service for any changes to these annotations, and maintains the appropriate watches on the local EndpointWatcher and/or remote EndpointWatchers fetched through the ClusterStore.This means that we will often have multiple EndpointTranslators writing to the same
Get
response stream. In order for aNoEndpoints
message sent to one EndpointTranslator to not clobber the whole stream, we make a change whereNoEndpoints
messages are no longer sent to the response stream, but are replaced by aRemove
message containing all of the addresses from that EndpointTranslator. This allows multiple EndpointTranslators to coexist on the same stream.