-
Notifications
You must be signed in to change notification settings - Fork 136
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
Add v3 xDS support #140
Merged
Merged
Add v3 xDS support #140
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
cae4ebc
Add v3 xDS support
mpuncel f080a92
PR comments: move type URLs to their own static class. Fix broken jav…
mpuncel 45b7fba
PR comments: use package names to differentiate v2 and v3 cache types
mpuncel 6de5cbb
put tests in v2 and v3 packages
mpuncel 243e2cd
rename v2 onStreamRequest callback, remove default implementation
mpuncel 3a07190
rename onStreamRequest on DiscoveryServerCallbacks
mpuncel 9a4e113
DRY most of the DiscoveryServerCallbacks implementations in integrati…
mpuncel 306aa33
make v3 transport integration tests also use v3 resource version
mpuncel 45f67aa
update README and add v2 -> v3 guide
mpuncel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Migrating from xDS v2 to v3 | ||
|
||
To faciliate migrating from the v2 xDS APIs to v3, this repo supports both the | ||
v2 and v3 gRPC transports, with each transport supporting type URL rewriting of | ||
DiscoveryResponse to whatever version the client requests with | ||
api_resource_version. | ||
|
||
The migration requires care - for example, using v3-only fields too soon or trying to use | ||
deprecated v2 fields too late can cause Envoy to reject or improperly apply config. | ||
|
||
### Recommended Sequence | ||
|
||
This section assumes you have sufficient control over Envoy sidecar versions that you do | ||
not need to run v2 and v3 simultaneously for a long migration period. | ||
|
||
1. Make sure your oldest Envoy client supports final v2 message versions. | ||
2. | ||
1. Ensure your control plane is not using any deprecated v2 fields. | ||
Deprecated v2 fields will cause errors when they are translated to v3 | ||
(because deprecated v2 fields are dropped in v3). | ||
2. Configure a V3DiscoveryServer alongside the V2DiscoveryServer in your | ||
control plane. You can (and should) use the same (v2) Cache implementation | ||
in both servers. | ||
3. Deploy all Envoy clients to switch to both the v3 transport_api_version and | ||
resource_api_version in each respective xDS configs. As this happens, the V3DiscoveryServer | ||
will be translating your v2 resources to v3 automatically, and the V2DiscoveryServer will | ||
stop being used. | ||
4. | ||
1. Rewrite your control plane code to use v3 resources, which means using | ||
V3SimpleCache (if you use SimpleCache). You may now start using v3-only | ||
message fields if you choose. | ||
2. Drop the V2DiscoveryServer. | ||
|
||
### Alternative | ||
|
||
Another possible path to the one above is to switch to generating v3 in the | ||
control plane first (e.g. by using V3SimpleCache) and then deploying Envoy | ||
clients to use v3 transport and resource versions. | ||
|
||
This approach requires care to not use new V3-only fields until the client side | ||
upgrade is complete (or at least understand the consequences of doing so). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
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.
Nitpick: This can be extracted to a method and used in V2 version.
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.
can it?
c
has a different type for each of them