This is the 1.62.0 release of Agones.
This release introduces the new RollingUpdateSurge alpha feature (disabled by default), which applies maxSurge during Fleet rolling updates that hold Allocated GameServers, includes a breaking change requiring a trailing % for Fleet maxSurge and maxUnavailable percentage values, makes Counts and Lists always on, and focuses on improving GameServer controller reliability, port allocation, and Fleet autoscaler behavior. Key updates include preventing rate-limiter exhaustion during informer resynchronization, fixing duplicate host ports allocated to a single GameServer, fixing GameServer health status reporting for container crashes when the SidecarContainers feature gate is enabled, correcting replica reporting when autoscaling is declined, improving Fleet autoscaler error diagnostics, and fixing Unreal SDK compatibility with Unreal Engine 5.8. Together, these changes strengthen GameServer lifecycle management and improve troubleshooting.
-
Fleet Rolling Update Percentage Validation: Fleet maxSurge and maxUnavailable percentage values now require a trailing %. A bare numeric string such as "25", previously read as 25%, is now rejected at validation. Fleets that are already stored with a bare numeric string are not re-validated, so their rolling updates will fail in the Fleet controller with an "error parsing MaxSurge/MaxUnavailable value" error until the field is changed to "25%". Note that an integer such as 25 means 25 GameServers, not 25 percent. Update affected Fleets before or immediately after upgrading.
-
Counts and Lists Can No Longer Be Turned Off: Removed the CountsAndLists feature gate checks from API validation, controllers, allocation, the Fleet autoscaler, metrics, and the SDK server. This means setting the CountsAndLists feature gate to false no longer disables Counts and Lists, and the feature is always on.
-
Improved GameServer Controller Reliability: Fixed rate-limiter exhaustion in the SucceededController, MissingPodController, and HealthController caused by repeated informer resynchronizations. This improves GameServer state transitions, preventing servers from remaining stuck in Allocated or failing to transition to Unhealthy due to controller queue backlogs.
-
Fix Duplicate Host Port Allocation: Fixed an issue where a GameServer with multiple ports could be allocated the same host port more than once, producing an invalid Pod. All of a GameServer's ports are now allocated from a single node, and port requests that exceed a port range's capacity move the GameServer to the Error state instead of retrying indefinitely.
-
Fix GameServer Health Status: With the SidecarContainers feature gate enabled, fixed an issue where GameServers were not marked Unhealthy when their containers crashed before reaching Ready. This ensures accurate health status reporting and improves reliability.
-
Fix Fleet Autoscaler Replica Reporting: Fixed an issue where the Fleet autoscaler returned an incorrect replica count when a webhook responded with scale: false. The fix ensures the configured replica count from the Fleet specification is returned correctly.
-
Improve Fleet Autoscaler Error Reporting: Improved AutoScalingFleetError events to include the Fleet name and target replica count. This makes autoscaling failures easier to identify and troubleshoot.
-
Unreal SDK UE 5.8 Compatibility: Fixed Unreal SDK compatibility with Unreal Engine 5.8 by updating how GameServer annotation, label, and counter keys are read from JSON. This lets Unreal Engine 5.8 projects use the Agones Unreal SDK.
Check the README for details on features, installation and usage.
What's Changed
Breaking changes
- cleanup: remove use of deprecated Go APIs by @markmandel in #4791
Fixed bugs
- test: make TestListAutoscalerWithSDKMethods independent of deletion order by @markmandel in #4763
- fix: set GameServer to Unhealthy on container crash before Ready in sidecar mode by @bknote71 in #4770
- fix: stop GameServer sub-controller from exhausting rate limiters by @markmandel in #4775
- Fix UE 5.8 compatibility in the Unreal SDK by @laurie71 in #4779
- fix: return spec replicas when webhook autoscaler responds with scale: false by @bknote71 in #4787
- fix: report fleet name and target replicas in AutoScalingFleetError event by @bknote71 in #4793
- ci: run agones-dev-branch-build from always-be-building by @igooch in #4805
- Fix duplicate host ports allocated to one GameServer by @cvas22 in #4798
- fix: apply maxSurge during rolling updates of Fleets with Allocated GameServers by @Reasonably in #4795
Other
- Preparation for Release v1.62.0 by @indurireddy-TF in #4752
- feat: Promote CountsAndLists feature gate to Stable - API validation … by @Sivasankaran25 in #4733
- cleanup: remove PlayerTracking from the simple-game-server example by @markmandel in #4757
- docs: remove remaining PlayerTracking documentation by @markmandel in #4754
- build: enable usestdlibvars perfsprint usetesting exptostd & recvcheck by @markmandel in #4753
- cleanup: remove PlayerTracking from the nodejs-simple example by @markmandel in #4755
- cleanup: remove PlayerTracking from the Unreal SDK by @markmandel in #4758
- cleanup: remove PlayerTracking from the Python SDK by @markmandel in #4762
- build: bump codelytv/pr-size-labeler from 1.10.4 to 1.11.0 by @dependabot[bot] in #4761
- build: bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #4764
- cleanup: remove PlayerTracking from the supertuxkart example by @markmandel in #4756
- cleanup: remove PlayerTracking from the Rust SDK by @markmandel in #4768
- build: bump codelytv/pr-size-labeler from 1.11.0 to 1.12.0 by @dependabot[bot] in #4771
- build: enable protogetter, and route proto field reads through getters by @markmandel in #4766
- cleanup: remove PlayerTracking from the Node.js SDK by @markmandel in #4767
- Remove CountsAndLists feature gate from controllers, allocation, auto… by @Sivasankaran25 in #4760
- build: enable nolintlint, and normalise //nolint directives by @markmandel in #4773
- Add @nrwiersma to community membership list by @markmandel in #4783
- Remove CountsAndLists feature gate from SDK server by @Sivasankaran25 in #4781
- build: mount main .git dir into build container when in a git worktree by @markmandel in #4776
- ci: build e2e example images, skipping unchanged ones by @markmandel in #4790
- Remove perf cluster, keep code for manual runs by @Sivasankaran25 in #4788
- ci: build autoscaler-webhook example image for e2e tests by @markmandel in #4810
- fix: clean up feature shortcodes in .html files and resolve orphaned … by @Sivasankaran25 in #4689
New Contributors
- @bknote71 made their first contribution in #4770
- @laurie71 made their first contribution in #4779
- @cvas22 made their first contribution in #4798
- @Reasonably made their first contribution in #4795
Full Changelog: v1.61.0...v1.62.0
See CHANGELOG for more details on changes.
Images available with this release:
- us-docker.pkg.dev/agones-images/release/agones-controller:1.62.0
- us-docker.pkg.dev/agones-images/release/agones-sdk:1.62.0
- us-docker.pkg.dev/agones-images/release/agones-ping:1.62.0
- us-docker.pkg.dev/agones-images/release/agones-allocator:1.62.0
- us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.18
- us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.23
- us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.27
- us-docker.pkg.dev/agones-images/examples/crd-client:0.26
- us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.12
- us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.14
- us-docker.pkg.dev/agones-images/examples/simple-game-server:0.44
- us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.25
- us-docker.pkg.dev/agones-images/examples/unity-simple-server:0.3
- us-docker.pkg.dev/agones-images/examples/xonotic-example:2.8
Helm chart available with this release:
Make sure to add our stable helm repository using
helm repo add agones https://agones.dev/chart/stable