This is the 1.61.0 release of Agones.
This release focuses on strengthening GameServer lifecycle reliability, hardening security for the SDK sidecar, and continuing internal code modernization. Key updates include a restricted-compatible security context for the SDK server sidecar, fixes for GameServer health detection and fleet auto scaling edge cases, a memory leak fix on GameServer deletion, a Helm-conditional fix for CRD patch metadata, and continued migration of the codebase to a new internal errors package. Together, these changes improve production stability for game server operators and keep the project's build tooling current.
-
Helm 3 to Helm 4 Upgrade: Agones tooling and charts have been upgraded from Helm 3 to Helm 4. Operators managing Agones installations via Helm should ensure their deployment pipelines and Helm client versions are compatible with Helm 4.
-
Restricted-Compatible Security Context for SDK Sidecar: The SDK server sidecar now supports a security context compatible with Kubernetes' restricted Pod Security Standard, making it easier for operators to run Agones in clusters that enforce strict security policies.
-
GameServer Health Detection Fix: GameServers are now correctly marked Unhealthy when the game container terminates but the Pod itself remains Running, closing a gap where crashed game processes could previously go undetected.
-
Memory Leak Fix on GameServer Deletion: Resolved a memory leak that occurred when a GameServer was deleted, improving controller stability over long-running clusters.
-
Fleet Rolling Update Fix: Active GameServerSet replica counts are now clamped at zero during fleet rolling updates, preventing invalid negative replica states during scale-down transitions.
-
E2E Test Stability on GKE Autopilot: SendTCP now retries TCP dialing on GKE Autopilot clusters, improving reliability for automated end-to-end test runs.
-
SDK Server maxItems Fix: The gameservers.lists.maxItems setting is now correctly plumbed through to the SDK server, ensuring configured list size limits are honored.
-
New Website Logo (Snapser): Welcome to Snapser! Their logo has been added to the Agones homepage showcasing organizations using Agones in production.
Check the README for details on features, installation and usage.
What's Changed
Breaking changes
- fix: gate x-kubernetes-patch-* CRD fields behind a Helm conditional by @markmandel in #4698
- feat: upgrade helm from 3 to 4 by @lacroixthomas in #4746
Implemented enhancements
Fixed bugs
- fix: mark GameServer Unhealthy when the game container terminates and the Pod stays Running by @GrowlyX in #4663
- fix memory leak when delete game server by @txuna in #4697
- Clamp active GameServerSet replicas at zero during fleet rolling updates by @Jacobbrewer1 in #4706
- fix: use crates.io registry token for Rust SDK publishing by @indurireddy-TF in #4693
- fix: plumb gameservers.lists.maxItems through to the SDK server by @markmandel in #4729
- fix: move GameServer to Shutdown when the game container exits cleanly and the Pod stays Running by @GrowlyX in #4737
Security fixes
- build: enable gosec, correctness linters, and testifylint by @markmandel in #4696
Other
- contrib: enforce automated test coverage for all submissions by @markmandel in #4675
- Preparation for Release v1.61.0 by @Sivasankaran25 in #4687
- chore: upgrade website to Docsy 0.16.0 and restore the version lock by @markmandel in #4669
- build: upgrade golangci-lint to v2.12.2 and migrate config by @markmandel in #4676
- build: bump actions/stale from 10.4.0 to 11.0.0 by @dependabot[bot] in #4666
- build: update dependencies in autoscaler-webhook example by @markmandel in #4688
- build: ignore versioned 1-*.agones.dev URLs in htmltest by @markmandel in #4695
- feat: use new errors pkg in pkg/gameservers/ by @lacroixthomas in #4691
- test: Ignore https://development.agones.dev/ link by @markmandel in #4700
- test: replace
assertwithrequirein e2e TestFleetStrategyValidation by @markmandel in #4704 - build: bump browserslist from 4.28.1 to 4.28.8 in /sdks/nodejs in the npm_and_yarn group across 1 directory by @dependabot[bot] in #4708
- feat: use new errors pkg in pkg/gameserverallocations/* by @lacroixthomas in #4701
- Retry TCP dial in SendTCP only on GKE Autopilot by @markmandel in #4709
- build: bump the go_modules group across 4 directories with 1 update by @dependabot[bot] in #4707
- build: bump the go_modules group across 7 directories with 1 update by @dependabot[bot] in #4717
- feat: use new errors pkg in pkg/cloudproduct/* by @lacroixthomas in #4712
- feat: use new errors pkg in pkg/fleets/* by @lacroixthomas in #4710
- feat: use new errors pkg in pkg/portallocator/* by @lacroixthomas in #4714
- feat: use new errors pkg in pkg/gameserverset/* by @lacroixthomas in #4703
- feat: use new errors pkg in pkg/metrics/* by @lacroixthomas in #4713
- feat: stop using github.com/pkg/errors in build/* by @lacroixthomas in #4724
- feat: use new errors pkg in pkg/apis/* by @lacroixthomas in #4720
- feat: use new errors pkg in ./cmd/* by @lacroixthomas in #4721
- feat: use new errors pkg in sdks/* by @lacroixthomas in #4722
- PlayerTracking Removal: Delete Unit Tests by @markmandel in #4719
- build: bump the go_modules group across 11 directories with 1 update by @dependabot[bot] in #4732
- feat: stop using github.com/pkg/errors in examples/* by @lacroixthomas in #4723
- Snapser: Logo addition by @ajinkya-apte in #4736
- feat: use new errors pkg in pkg/fleetautoscalers/* by @lacroixthomas in #4711
- build: enable modernize, minus the omitzero and newexpr analyzers by @markmandel in #4735
- feat: use new errors pkg in pkg/sdkserver/* by @lacroixthomas in #4715
- build: bump the npm_and_yarn group across 1 directory with 3 updates by @dependabot[bot] in #4734
- feat: use new errors pkg in ./tests/* by @lacroixthomas in #4725
- fix: scope test-go to sdks/go to avoid rust SDK build race by @markmandel in #4739
- feat: use new errors pkg in pkg/util/* by @lacroixthomas in #4716
- Update cmake link to always latest by @markmandel in #4744
- test: remove PlayerTracking e2e tests by @markmandel in #4741
- test: call t.Helper() in shared test helpers by @markmandel in #4738
- fix: tolerate an existing allocator client secret when copying by @GrowlyX in #4740
- chore: add new rule for errors in linter and agent by @lacroixthomas in #4745
- build: bump go.opentelemetry.io/otel/sdk from 1.44.0 to 1.45.0 in /build/agones-bot in the go_modules group across 1 directory by @dependabot[bot] in #4747
New Contributors
- @GrowlyX made their first contribution in #4663
- @Jacobbrewer1 made their first contribution in #4706
- @ajinkya-apte made their first contribution in #4736
Full Changelog: v1.60.0...v1.61.0
See CHANGELOG for more details on changes.
Images available with this release:
- us-docker.pkg.dev/agones-images/release/agones-controller:1.61.0
- us-docker.pkg.dev/agones-images/release/agones-sdk:1.61.0
- us-docker.pkg.dev/agones-images/release/agones-ping:1.61.0
- us-docker.pkg.dev/agones-images/release/agones-allocator:1.61.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.11
- us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.14
- us-docker.pkg.dev/agones-images/examples/simple-game-server:0.43
- us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.24
- 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