-
Notifications
You must be signed in to change notification settings - Fork 810
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
SDK proto compatibility guarantees and deprecation policies documentation #3774
Conversation
Build Failed 😱 Build Id: 6cdcdd1b-9e58-4226-8a75-feccde6144f1 To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
809c899
to
35bb0ca
Compare
Build Succeeded 👏 Build Id: e052afdd-79b3-401c-b5c3-1925005d2485 The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this version:
|
35bb0ca
to
2397fe5
Compare
Build Succeeded 👏 Build Id: 4863b84b-6c79-4432-93b0-6afffc87c23f The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this 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.
Meta question -- I'm wondering if this (and all other details on in-place upgrades), should be in: https://agones.dev/site/docs/installation/upgrading/
Or that section shouid be fleshed out into separate sections, since ultimately the CUJ is "I want to update in place", not "I want to learn how the sdk-server works" ? (Please correct me if I'm wrong).
f5ebf8c
to
83ea058
Compare
We definitely want to have the in-place upgrades info there. Probably most of what's in this PR could also go in there. If we switch it over I would probably both feature-gate it to when in-place upgrades is released in Alpha, and make even more explicit from what number release the info applies. |
Build Succeeded 👏 Build Id: a99431d6-e184-4d18-861d-afe579815c29 The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this 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.
In general, looks pretty good to me and agreed on putting it in Upgrades.
I'd like to resolve whether to gate this "later" or 1.41: #3774 (comment)
And @markmandel should give it a pass to see if it makes sense.
ea67a83
to
3ab9c89
Compare
Build Failed 😱 Build Id: 56deae11-2729-4d89-9ab5-387fb2bd1c9f To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
3ab9c89
to
af68e81
Compare
Build Succeeded 👏 Build Id: 6efe511b-85d9-498a-b41d-e8d76594b1af The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this 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.
LGTM - would like @markmandel to give it a pass, though.
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.
Good start! I think if we focus on the why rather than the how at least to start, this will round out quite nicely.
1. Run any other tests to ensure the Agones installation is still working as expected. | ||
1. Close your maintenance window. | ||
7. Congratulations - you have now upgraded to a new version of Kubernetes! 👍 | ||
|
||
{{% feature publishVersion="1.41.0" %}} | ||
## SDK Proto Compatibility Guarantees as of Agones v1.41.0 |
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.
So I'm going to come back to CUJ on this one. This is docs on what we guarantee at a technical level, but not why we guarantee it, or why as an end user, should I care about this documentation? What is the end user trying to do here?
Is this the beginning of supporting in-place upgrades? If so, shall we give it that header and description, and then go into details of how? (I think this is where we should start)
Just on headers and structure, I would argue it's not a SDK Proto Compatibility that's what we have here, but actually SDK Compatibility. The implementation details (sidecar + proto) is actually not important to the end user - it's that the SDK itself has compatibility guarantees.
We should still cover some of the how (since people will likely want to know), but it's not the top level element of the documentation I don't think.
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.
This reason for "proto" is specifically SDK proto / SDK Server and does not apply to the client. The SDK client could be well out of date. For instance the C++, Rust, Unity, and Unreal clients don't have CountsAndLists at all even though it's going into Beta, and if no one updates them they may not have those features in GA. So it should be clear to the reader that this guarantee does not apply to the SDK clients. (Also the reason for using "proto" instead of "API" which is a bit more ambiguous.) If we were guaranteeing SDK clients we would need to have a separate discussion about deprecating clients if no one updates them regularly.
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.
But as an end user I don't care about the proto - I want to know if I am using my SDK client, will that stay backward compatible.
Much of this is covered in this section of the design doc: #3766 (comment) - which for this documentation is the more relevant part.
The SDK client could be well out of date.
Why would that mater?
or instance the C++, Rust, Unity, and Unreal clients don't have CountsAndLists at all even though it's going into Beta, and if no one updates them they may not have those features in GA.
Not an issue for backward or forward compatability.
If we were guaranteeing SDK clients we would need to have a separate discussion about deprecating clients if no one updates them regularly.
I'm not sure why we would do that? Assuming the proto doesn't change (which it shouldn't for stable APIs, they should just work forever -- but the linked above RFC covers this.
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.
For instance if the client has an API in Beta and no one moves it to GA, the Beta will break after 5 releases, so anyone using that client can't move past the version when it's removed from Beta. Which means that we would have to track version compatibility horizons for each client. The Users are not required to update Client SDK in game server binaries except for SDK proto deprecations, or breaking Alpha API changes.
assumes that all clients are up to date, which is an incorrect assumption. (A side note that this doesn't apply to the REST API which is automatically generated from the proto.) For all non-REST APIs, there may be no Client SDK to update to.
The assumption is that the proto may change. It's unlikely, but we reserve the right to add and remove fields and methods within our deprecation policies. So if a field or method is removed and the client is not updated, the client will be broken starting at a particular version. That's why, if we are guaranteeing the clients, we should have a discussion on deprecating clients, or at least marking them as "waiting for maintainer" or similar. I would argue that we shouldn't take on guaranteeing and maintaining all clients.
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.
For instance if the client has an API in Beta and no one moves it to GA, the Beta will break after 5 releases, so anyone using that client can't move past the version when it's removed from Beta
I don't think it will. There implementation doesn't go away - it's still there, it will all still work.
Beta Client SDK APIs should be considered generally stable, but we may alter the parameters/returns if we need to
Beta APIs may change, but that's also the risk of using Beta APIs - but are definitely considered more stable than Alpha.
We foresee that updating Client SDKs in game server binaries will be yearly toil, if using Stable APIs, or semiannual toil, if using any Beta API; this toil can be as simple as verifying that there were no deprecations in the period involved. Given how stable our core APIs have been, it may be possible to go multiple years without updating the Client SDK.
I am seeing some more room here to flesh out exactly what is guaranteed with a Beta SDK though - I think there's some ambiguity here that could be more concrete for sure.
153b0b7
to
787587c
Compare
Build Succeeded 👏 Build Id: 46514077-3708-4c8c-b15d-e507e0ea4daf The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this version:
|
Build Succeeded 👏 Build Id: ce94f97e-57d7-4847-94e0-3413d8fc653a The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this 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.
Mainly nits, but I like this so much more!
We could probably add some details on the "how" at later stage, depending on if that's information people want or need.
Once nits are done, happy to merge.
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 think this is it (hopefully 😆). Words are hard.
6804e81
to
a50158a
Compare
Build Failed 😱 Build Id: 6d19b32c-6fb8-47f4-9090-18f46b472544 To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
Flaky 1.29 Autopilot. Cleared the cluster and trying again. |
Build Succeeded 👏 Build Id: dd5563ed-ad3b-4e5d-ad1b-a4c03749b990 The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this version:
|
Looks great! Sent #3827 to fix a minor issue. |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [agones](https://agones.dev) ([source](https://togithub.com/googleforgames/agones)) | minor | `1.40.0` -> `1.41.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>googleforgames/agones (agones)</summary> ### [`v1.41.0`](https://togithub.com/googleforgames/agones/blob/HEAD/CHANGELOG.md#v1410-2024-06-04) [Compare Source](https://togithub.com/googleforgames/agones/compare/v1.40.0...v1.41.0) [Full Changelog](https://togithub.com/googleforgames/agones/compare/v1.40.0...v1.41.0) **Implemented enhancements:** - Configure Allocator Status Code by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3782](https://togithub.com/googleforgames/agones/pull/3782) - Graduate Counters and Lists to Beta by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3801](https://togithub.com/googleforgames/agones/pull/3801) - Passthrough autopilot - Adds an AutopilotPassthroughPort Feature Gate and new pod label by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3809](https://togithub.com/googleforgames/agones/pull/3809) - CountsAndLists: Move to Beta Protobuf by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3806](https://togithub.com/googleforgames/agones/pull/3806) - feat: support multiple port ranges by [@​nrwiersma](https://togithub.com/nrwiersma) in [https://github.com/googleforgames/agones/pull/3747](https://togithub.com/googleforgames/agones/pull/3747) - Changes `sdk-server` to Patch instead of Update by [@​igooch](https://togithub.com/igooch) in [https://github.com/googleforgames/agones/pull/3803](https://togithub.com/googleforgames/agones/pull/3803) - Generate grpc for nodejs from alpha to beta by [@​lacroixthomas](https://togithub.com/lacroixthomas) in [https://github.com/googleforgames/agones/pull/3825](https://togithub.com/googleforgames/agones/pull/3825) - Update CountsAndLists from Alpha to Beta by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3824](https://togithub.com/googleforgames/agones/pull/3824) - feat(gameserver): New DirectToGameServer PortPolicy allows direct traffic to a GameServer by [@​daniellee](https://togithub.com/daniellee) in [https://github.com/googleforgames/agones/pull/3807](https://togithub.com/googleforgames/agones/pull/3807) - Passthrough autopilot - Adds mutating webhook by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3833](https://togithub.com/googleforgames/agones/pull/3833) - Passthrough autopilot - added ports array case and updated unit tests by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3842](https://togithub.com/googleforgames/agones/pull/3842) - Nodejs counters and lists by [@​steven-supersolid](https://togithub.com/steven-supersolid) in [https://github.com/googleforgames/agones/pull/3726](https://togithub.com/googleforgames/agones/pull/3726) - Promote AutopilotPassthroughPort feature gate to Alpha by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3849](https://togithub.com/googleforgames/agones/pull/3849) **Fixed bugs:** - Helm Param Update: Default to agones.controller if agones.extensions is Missing by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3773](https://togithub.com/googleforgames/agones/pull/3773) - fix: rollout strategy issues by [@​nrwiersma](https://togithub.com/nrwiersma) in [https://github.com/googleforgames/agones/pull/3762](https://togithub.com/googleforgames/agones/pull/3762) - Set Minimum Buffer Size to 1 by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3749](https://togithub.com/googleforgames/agones/pull/3749) - Pin ltsc2019 to older SHA by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3829](https://togithub.com/googleforgames/agones/pull/3829) - TestGameServerAllocationDuringMultipleAllocationClients: Readdress flake by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3831](https://togithub.com/googleforgames/agones/pull/3831) - Refactor finalizer name to include valid domain name and path by [@​indexjoseph](https://togithub.com/indexjoseph) in [https://github.com/googleforgames/agones/pull/3840](https://togithub.com/googleforgames/agones/pull/3840) - agones-{extensions,allocator}: Be more defensive about draining by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3839](https://togithub.com/googleforgames/agones/pull/3839) - agones-{extensions,allocator}: Pause after cancelling context by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3843](https://togithub.com/googleforgames/agones/pull/3843) - Change the line to modify in Quickstart: Edit a Game Server by [@​peterzhongyi](https://togithub.com/peterzhongyi) in [https://github.com/googleforgames/agones/pull/3844](https://togithub.com/googleforgames/agones/pull/3844) **Other:** - Prep for Release v1.41.0 by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3800](https://togithub.com/googleforgames/agones/pull/3800) - Update site documentation to reflect firewall prefix and default to Autopilot cluster creation for Agones by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3769](https://togithub.com/googleforgames/agones/pull/3769) - Add a System Diagram and overview page by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3792](https://togithub.com/googleforgames/agones/pull/3792) - Update Side Menu: Preserve and Restore Scroll Position by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3805](https://togithub.com/googleforgames/agones/pull/3805) - fix: typo by [@​skmpf](https://togithub.com/skmpf) in [https://github.com/googleforgames/agones/pull/3808](https://togithub.com/googleforgames/agones/pull/3808) - Helm Config: Add httpUnallocatedStatusCode in Allocator Service by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3802](https://togithub.com/googleforgames/agones/pull/3802) - Update Docs: CountersAndLists to Beta by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3810](https://togithub.com/googleforgames/agones/pull/3810) - Disable Dev feature FeatureAutopilotPassthroughPort by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3815](https://togithub.com/googleforgames/agones/pull/3815) - Disable FeatureAutopilotPassthroughPort in features.go by [@​vicentefb](https://togithub.com/vicentefb) in [https://github.com/googleforgames/agones/pull/3816](https://togithub.com/googleforgames/agones/pull/3816) - SDK proto compatibility guarantees and deprecation policies documentation by [@​igooch](https://togithub.com/igooch) in [https://github.com/googleforgames/agones/pull/3774](https://togithub.com/googleforgames/agones/pull/3774) - Fix dangling "as of" by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3827](https://togithub.com/googleforgames/agones/pull/3827) - Steps to Promote SDK Features from Alpha to Beta by [@​Kalaiselvi84](https://togithub.com/Kalaiselvi84) in [https://github.com/googleforgames/agones/pull/3814](https://togithub.com/googleforgames/agones/pull/3814) - Adds comment for help troubleshooting issues with terraform tfstate by [@​igooch](https://togithub.com/igooch) in [https://github.com/googleforgames/agones/pull/3822](https://togithub.com/googleforgames/agones/pull/3822) - docs: improve counter and list example comments by [@​yonbh](https://togithub.com/yonbh) in [https://github.com/googleforgames/agones/pull/3818](https://togithub.com/googleforgames/agones/pull/3818) - Skip /tmp/ on yamllint by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3838](https://togithub.com/googleforgames/agones/pull/3838) - TestAllocatorAfterDeleteReplica: More logging by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3837](https://togithub.com/googleforgames/agones/pull/3837) - Instructions for upgrading golang version by [@​gongmax](https://togithub.com/gongmax) in [https://github.com/googleforgames/agones/pull/3819](https://togithub.com/googleforgames/agones/pull/3819) - Remove unused function FindGameServerContainer by [@​zmerlynn](https://togithub.com/zmerlynn) in [https://github.com/googleforgames/agones/pull/3841](https://togithub.com/googleforgames/agones/pull/3841) - Adds Unreal to the List of URL Links to Not Check by [@​igooch](https://togithub.com/igooch) in [https://github.com/googleforgames/agones/pull/3847](https://togithub.com/googleforgames/agones/pull/3847) - docs: clarify virtualization setup for Windows versions by [@​andresromerodev](https://togithub.com/andresromerodev) in [https://github.com/googleforgames/agones/pull/3850](https://togithub.com/googleforgames/agones/pull/3850) **New Contributors:** - [@​skmpf](https://togithub.com/skmpf) made their first contribution in [https://github.com/googleforgames/agones/pull/3808](https://togithub.com/googleforgames/agones/pull/3808) - [@​yonbh](https://togithub.com/yonbh) made their first contribution in [https://github.com/googleforgames/agones/pull/3818](https://togithub.com/googleforgames/agones/pull/3818) - [@​peterzhongyi](https://togithub.com/peterzhongyi) made their first contribution in [https://github.com/googleforgames/agones/pull/3844](https://togithub.com/googleforgames/agones/pull/3844) - [@​andresromerodev](https://togithub.com/andresromerodev) made their first contribution in [https://github.com/googleforgames/agones/pull/3850](https://togithub.com/googleforgames/agones/pull/3850) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9oZWxtIiwidHlwZS9taW5vciJdfQ==-->
What type of PR is this?
/kind documentation
What this PR does / Why we need it:
As part of work on In-place Agones Upgrades #3766 we are going to explicitly guarantee certain proto versions during upgrade and this documents that contract.
Which issue(s) this PR fixes:
Working on #3767
Special notes for your reviewer: