-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
Implement discovery protocol on v3 api #13624
Comments
cc @ptabor |
@ahrtr would you be interested in implementing this? |
@serathius Sure. Based on the Plans for v3.6.0 release, I assume this should be completed by the end of this month or the very early of next month? |
Yes, I hope be done with deprecation and downgrades by then. |
No problem. |
@serathius It took me a couple of hours to go through the existing discovery source code and try out the v2discovery using the public endpoint But the original discovery project discovery.etcd.io has already been archived, and obviously is out of date. So we have two directions:
I prefer to the second approach/direction. What do you think? @ptabor EDIT: We don't need to depend on the discovery.etcd.io at all, because it uses exactly the same v2client API to communicate with etcd server. It just automatically generates a token(UUID) for the client, see new.go#L35-L43. Apart from this, it just proxy the request to the backend etcd server, see token.go#L32. It seems that we just need to implement the similar functionality as previous v2http and of course the v3discovery (similar to v2discovery). |
@serathius I'd like to breakdown this task into 3 three smaller tasks:
I am planning to submit a PR for #1 today or tomorrow, so as to:
|
Small PRs are highly encouraged! Thanks for proposing this. |
Thank you @ahrtr . We should not depend/support discovery.etcd.io in any way. [Edited after reading the PR] Ad. deprecation plan, is my understanding correct: Assuming there is discovery protocol customer using:
If we consider upgrading scenario of the 2. keeping 1. as is.
So upgrade to 3.7/3.8 disruptful and we pushed the problem forward to 3.7/3.8 but it will still hit users. What options we have: 1. Make upgrade to 3.6 require explicit user action without migration path
2. Make upgrade to 3.7 require explicit user action without migration pathThis is similar to above... but user does not need to coordinate the 'concurrent' recreate with v3.5->v3.6 transition and can make it at any point during 3.6 lifecycle. 3. Make upgrade to 3.8 require the switch as proposed.I think that 2. is good enough. If we could cloud-source whether discovery has meaningful prod adoption we could consider 1. Orthogonally we could consider some tooling like |
Thanks for the comment. Since v2 discovery will be decommissioned in 3.8, so the tool should only be available in 3.5 ~ 3.7?
|
The implementation should have already been done in PR pull/13635, please take a look. @serathius @ptabor @spzala With regard to the documentation, my understanding is we only need to update document for 3.6, any the previous document should be keep as it is. But I do not see the sub-directory v3.6 in content/en/docs. My understanding is the sub-directory v3.6 will not be added until etcd v3.6 is released. Could you please provide guide on how & where should I update the discovery document? |
Two follow ups from the #13635:
|
Any work left? |
Just raised etcd-io/website#653 to track the left documentation work |
Motivation removal of V2 API in #12913
Context Etcd supports Discovery protocol https://etcd.io/docs/v3.4/dev-internal/discovery_protocol/ based on V2 API. In v3.6 we are removing V2 API so we need a replacement that will work in v3.6+ versions. In v3.6 discovery v2 should still be able to do on older vclusters
Goal:
--discovery-version
flag that acceptsv2
(default) andv3
value. Usingv3
will switch Etcd to use discovery protocol using V3 APIDeprecation plan:
v3
default in v3.7v2
option in v3.8The text was updated successfully, but these errors were encountered: