From 2abfd7165b9fb52bc732f420d29cb4ffae380f60 Mon Sep 17 00:00:00 2001 From: kamaljeeti <148054555+kamaljeeti@users.noreply.github.com> Date: Wed, 5 Jun 2024 01:41:37 +0530 Subject: [PATCH] Release v1.41.0 (#3852) --- CHANGELOG.md | 58 +++++ install/helm/agones/Chart.yaml | 4 +- install/helm/agones/values.yaml | 2 +- install/yaml/install.yaml | 74 +++--- sdks/csharp/sdk/AgonesSDK.nuspec | 2 +- sdks/csharp/sdk/csharp-sdk.csproj | 2 +- sdks/nodejs/package-lock.json | 4 +- sdks/nodejs/package.json | 2 +- sdks/rust/Cargo.toml | 2 +- sdks/unity/package.json | 2 +- site/config.toml | 4 +- site/content/en/blog/releases/1.40.0.md | 6 +- site/content/en/blog/releases/1.41.0.md | 62 +++++ .../en/docs/Guides/Client SDKs/_index.md | 125 --------- .../en/docs/Guides/Client SDKs/csharp.md | 156 ------------ .../en/docs/Guides/Client SDKs/rest.md | 102 -------- .../en/docs/Guides/counters-and-lists.md | 48 ---- site/content/en/docs/Guides/feature-stages.md | 15 -- .../content/en/docs/Guides/player-tracking.md | 11 - .../docs/Installation/Creating Cluster/gke.md | 2 - .../docs/Installation/Install Agones/helm.md | 143 ----------- site/content/en/docs/Installation/_index.md | 3 +- .../content/en/docs/Installation/upgrading.md | 2 - .../Integration Patterns/player-capacity.md | 13 - site/content/en/docs/Reference/fleet.md | 127 ---------- site/content/en/docs/Reference/gameserver.md | 142 ----------- .../en/docs/Reference/gameserverallocation.md | 239 ------------------ site/layouts/partials/navbar.html | 2 +- 28 files changed, 175 insertions(+), 1179 deletions(-) create mode 100644 site/content/en/blog/releases/1.41.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index e34adb96f1..1287052a06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,63 @@ # Changelog +## [v1.41.0](https://github.com/googleforgames/agones/tree/v1.41.0) (2024-06-04) + +[Full Changelog](https://github.com/googleforgames/agones/compare/v1.40.0...v1.41.0) + +**Implemented enhancements:** +- Configure Allocator Status Code by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3782 +- Graduate Counters and Lists to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3801 +- Passthrough autopilot - Adds an AutopilotPassthroughPort Feature Gate and new pod label by @vicentefb in https://github.com/googleforgames/agones/pull/3809 +- CountsAndLists: Move to Beta Protobuf by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3806 +- feat: support multiple port ranges by @nrwiersma in https://github.com/googleforgames/agones/pull/3747 +- Changes `sdk-server` to Patch instead of Update by @igooch in https://github.com/googleforgames/agones/pull/3803 +- Generate grpc for nodejs from alpha to beta by @lacroixthomas in https://github.com/googleforgames/agones/pull/3825 +- Update CountsAndLists from Alpha to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3824 +- feat(gameserver): New DirectToGameServer PortPolicy allows direct traffic to a GameServer by @daniellee in https://github.com/googleforgames/agones/pull/3807 +- Passthrough autopilot - Adds mutating webhook by @vicentefb in https://github.com/googleforgames/agones/pull/3833 +- Passthrough autopilot - added ports array case and updated unit tests by @vicentefb in https://github.com/googleforgames/agones/pull/3842 +- Nodejs counters and lists by @steven-supersolid in https://github.com/googleforgames/agones/pull/3726 +- Promote AutopilotPassthroughPort feature gate to Alpha by @vicentefb in https://github.com/googleforgames/agones/pull/3849 + +**Fixed bugs:** +- Helm Param Update: Default to agones.controller if agones.extensions is Missing by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3773 +- fix: rollout strategy issues by @nrwiersma in https://github.com/googleforgames/agones/pull/3762 +- Set Minimum Buffer Size to 1 by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3749 +- Pin ltsc2019 to older SHA by @zmerlynn in https://github.com/googleforgames/agones/pull/3829 +- TestGameServerAllocationDuringMultipleAllocationClients: Readdress flake by @zmerlynn in https://github.com/googleforgames/agones/pull/3831 +- Refactor finalizer name to include valid domain name and path by @indexjoseph in https://github.com/googleforgames/agones/pull/3840 +- agones-{extensions,allocator}: Be more defensive about draining by @zmerlynn in https://github.com/googleforgames/agones/pull/3839 +- agones-{extensions,allocator}: Pause after cancelling context by @zmerlynn in https://github.com/googleforgames/agones/pull/3843 +- Change the line to modify in Quickstart: Edit a Game Server by @peterzhongyi in https://github.com/googleforgames/agones/pull/3844 + +**Other:** +- Prep for Release v1.41.0 by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3800 +- Update site documentation to reflect firewall prefix and default to Autopilot cluster creation for Agones by @vicentefb in https://github.com/googleforgames/agones/pull/3769 +- Add a System Diagram and overview page by @zmerlynn in https://github.com/googleforgames/agones/pull/3792 +- Update Side Menu: Preserve and Restore Scroll Position by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3805 +- fix: typo by @skmpf in https://github.com/googleforgames/agones/pull/3808 +- Helm Config: Add httpUnallocatedStatusCode in Allocator Service by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3802 +- Update Docs: CountersAndLists to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3810 +- Disable Dev feature FeatureAutopilotPassthroughPort by @vicentefb in https://github.com/googleforgames/agones/pull/3815 +- Disable FeatureAutopilotPassthroughPort in features.go by @vicentefb in https://github.com/googleforgames/agones/pull/3816 +- SDK proto compatibility guarantees and deprecation policies documentation by @igooch in https://github.com/googleforgames/agones/pull/3774 +- Fix dangling "as of" by @zmerlynn in https://github.com/googleforgames/agones/pull/3827 +- Steps to Promote SDK Features from Alpha to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3814 +- Adds comment for help troubleshooting issues with terraform tfstate by @igooch in https://github.com/googleforgames/agones/pull/3822 +- docs: improve counter and list example comments by @yonbh in https://github.com/googleforgames/agones/pull/3818 +- Skip /tmp/ on yamllint by @zmerlynn in https://github.com/googleforgames/agones/pull/3838 +- TestAllocatorAfterDeleteReplica: More logging by @zmerlynn in https://github.com/googleforgames/agones/pull/3837 +- Instructions for upgrading golang version by @gongmax in https://github.com/googleforgames/agones/pull/3819 +- Remove unused function FindGameServerContainer by @zmerlynn in https://github.com/googleforgames/agones/pull/3841 +- Adds Unreal to the List of URL Links to Not Check by @igooch in https://github.com/googleforgames/agones/pull/3847 +- docs: clarify virtualization setup for Windows versions by @andresromerodev in https://github.com/googleforgames/agones/pull/3850 + +**New Contributors:** +- @skmpf made their first contribution in https://github.com/googleforgames/agones/pull/3808 +- @yonbh made their first contribution in https://github.com/googleforgames/agones/pull/3818 +- @peterzhongyi made their first contribution in https://github.com/googleforgames/agones/pull/3844 +- @andresromerodev made their first contribution in https://github.com/googleforgames/agones/pull/3850 + ## [v1.40.0](https://github.com/googleforgames/agones/tree/v1.40.0) (2024-04-23) [Full Changelog](https://github.com/googleforgames/agones/compare/v1.39.0...v1.40.0) diff --git a/install/helm/agones/Chart.yaml b/install/helm/agones/Chart.yaml index cbd51effd9..091cdf9878 100644 --- a/install/helm/agones/Chart.yaml +++ b/install/helm/agones/Chart.yaml @@ -15,8 +15,8 @@ # Declare variables to be passed into your templates. apiVersion: v1 -appVersion: "1.41.0-dev" -version: 1.41.0-dev +appVersion: "1.41.0" +version: 1.41.0 name: agones description: a library for hosting, running and scaling dedicated game servers on Kubernetes. keywords: diff --git a/install/helm/agones/values.yaml b/install/helm/agones/values.yaml index d55fff77fc..e00dc58f7e 100644 --- a/install/helm/agones/values.yaml +++ b/install/helm/agones/values.yaml @@ -255,7 +255,7 @@ agones: topologySpreadConstraints: {} image: registry: us-docker.pkg.dev/agones-images/release - tag: 1.41.0-dev + tag: 1.41.0 controller: name: agones-controller pullPolicy: IfNotPresent diff --git a/install/yaml/install.yaml b/install/yaml/install.yaml index 1cf30b8786..9a00b002e0 100644 --- a/install/yaml/install.yaml +++ b/install/yaml/install.yaml @@ -50,7 +50,7 @@ metadata: namespace: agones-system labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm --- @@ -75,7 +75,7 @@ metadata: namespace: agones-system labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm --- @@ -100,7 +100,7 @@ metadata: namespace: default labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm --- @@ -112,7 +112,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.41.0-dev" + chart: "agones-1.41.0" release: "agones-manual" heritage: "Helm" type: Opaque @@ -129,7 +129,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.41.0-dev" + chart: "agones-1.41.0" release: "agones-manual" heritage: "Helm" data: @@ -145,7 +145,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.41.0-dev" + chart: "agones-1.41.0" release: "agones-manual" heritage: "Helm" data: @@ -161,7 +161,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.41.0-dev" + chart: "agones-1.41.0" release: "agones-manual" heritage: "Helm" data: @@ -191,7 +191,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -5639,7 +5639,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -5829,7 +5829,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -11109,7 +11109,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm name: gameserverallocationpolicies.multicluster.agones.dev @@ -11188,7 +11188,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16604,7 +16604,7 @@ metadata: name: agones-allocator labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm rules: @@ -16634,7 +16634,7 @@ metadata: name: agones-controller labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm rules: @@ -16688,7 +16688,7 @@ metadata: name: agones-sdk labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm rules: @@ -16707,7 +16707,7 @@ metadata: name: agones-allocator labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm subjects: @@ -16726,7 +16726,7 @@ metadata: name: agones-controller-access labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm subjects: @@ -16778,7 +16778,7 @@ metadata: namespace: default labels: app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm subjects: @@ -16812,7 +16812,7 @@ metadata: labels: agones.dev/role: controller app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16846,7 +16846,7 @@ metadata: labels: agones.dev/role: extensions app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16866,7 +16866,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16888,7 +16888,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16924,7 +16924,7 @@ metadata: labels: agones.dev/role: extensions app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16961,7 +16961,7 @@ metadata: labels: component: allocator app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -16983,7 +16983,7 @@ metadata: labels: multicluster.agones.dev/role: allocator app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -17017,7 +17017,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -17059,7 +17059,7 @@ spec: serviceAccountName: agones-controller containers: - name: agones-controller - image: "us-docker.pkg.dev/agones-images/release/agones-controller:1.41.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-controller:1.41.0" imagePullPolicy: IfNotPresent env: # minimum port that can be exposed to GameServer traffic @@ -17069,7 +17069,7 @@ spec: - name: MAX_PORT value: "8000" - name: SIDECAR_IMAGE # overwrite the GameServer sidecar image that is used - value: "us-docker.pkg.dev/agones-images/release/agones-sdk:1.41.0-dev" + value: "us-docker.pkg.dev/agones-images/release/agones-sdk:1.41.0" - name: ALWAYS_PULL_SIDECAR # set the sidecar imagePullPolicy to Always value: "false" - name: SIDECAR_CPU_REQUEST @@ -17175,7 +17175,7 @@ metadata: labels: component: extensions app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -17219,7 +17219,7 @@ spec: terminationGracePeriodSeconds: 27 containers: - name: agones-extensions - image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.41.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.41.0" imagePullPolicy: IfNotPresent env: - name: PROMETHEUS_EXPORTER @@ -17321,7 +17321,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -17356,7 +17356,7 @@ spec: priorityClassName: agones-system containers: - name: agones-ping - image: "us-docker.pkg.dev/agones-images/release/agones-ping:1.41.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-ping:1.41.0" imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -17430,7 +17430,7 @@ spec: secretName: allocator-client-ca containers: - name: agones-allocator - image: "us-docker.pkg.dev/agones-images/release/agones-allocator:1.41.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-allocator:1.41.0" imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -17513,7 +17513,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm spec: @@ -17564,7 +17564,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm webhooks: @@ -17607,7 +17607,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm webhooks: @@ -17652,7 +17652,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.41.0-dev + chart: agones-1.41.0 release: agones-manual heritage: Helm webhooks: diff --git a/sdks/csharp/sdk/AgonesSDK.nuspec b/sdks/csharp/sdk/AgonesSDK.nuspec index 91944faf6f..15212d47d4 100644 --- a/sdks/csharp/sdk/AgonesSDK.nuspec +++ b/sdks/csharp/sdk/AgonesSDK.nuspec @@ -2,7 +2,7 @@ AgonesSDK - 1.41.0-dev + 1.41.0 Google LLC Google LLC false diff --git a/sdks/csharp/sdk/csharp-sdk.csproj b/sdks/csharp/sdk/csharp-sdk.csproj index effbcf3900..5494c99136 100644 --- a/sdks/csharp/sdk/csharp-sdk.csproj +++ b/sdks/csharp/sdk/csharp-sdk.csproj @@ -13,7 +13,7 @@ https://agones.dev http://www.apache.org/licenses/LICENSE-2.0 AgonesSDK - 1.41.0-dev + 1.41.0 agones, googleforgames, kuberenetes, multiplayer, gameservers agones.dev Debug;Release;DebugProtoGen diff --git a/sdks/nodejs/package-lock.json b/sdks/nodejs/package-lock.json index ff9c5fce9c..2efd0b8d90 100644 --- a/sdks/nodejs/package-lock.json +++ b/sdks/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@google-cloud/agones-sdk", - "version": "1.41.0-dev", + "version": "1.41.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@google-cloud/agones-sdk", - "version": "1.41.0-dev", + "version": "1.41.0", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "1.10.7", diff --git a/sdks/nodejs/package.json b/sdks/nodejs/package.json index a5c452c615..36854f3768 100644 --- a/sdks/nodejs/package.json +++ b/sdks/nodejs/package.json @@ -26,5 +26,5 @@ "publishConfig": { "access": "public" }, - "version": "1.41.0-dev" + "version": "1.41.0" } diff --git a/sdks/rust/Cargo.toml b/sdks/rust/Cargo.toml index 70e1b0c5ed..12d0d8d6f4 100644 --- a/sdks/rust/Cargo.toml +++ b/sdks/rust/Cargo.toml @@ -14,7 +14,7 @@ [package] name = "agones" -version = "1.41.0-dev" +version = "1.41.0" edition = "2021" description = "The Rust SDK for Agones." license = "Apache-2.0" diff --git a/sdks/unity/package.json b/sdks/unity/package.json index 0782ce563d..bc51370557 100644 --- a/sdks/unity/package.json +++ b/sdks/unity/package.json @@ -1,6 +1,6 @@ { "name": "com.googleforgames.agones", - "version": "1.41.0-dev", + "version": "1.41.0", "displayName": "Agones Unity SDK", "description": "The Unity Gameserver SDK for Agones", "unity": "2019.1", diff --git a/site/config.toml b/site/config.toml index a32e020ed8..2bc74b988a 100644 --- a/site/config.toml +++ b/site/config.toml @@ -80,9 +80,9 @@ github_repo = "https://github.com/googleforgames/agones" gcs_engine_id = "016691298986124624340:x7qv2dywdao" # current release branch. Never is rc. -release_branch = "release-1.40.0" +release_branch = "release-1.41.0" # the main version. Never is rc. -release_version = "1.40.0" +release_version = "1.41.0" # shown for production supported_k8s = ["1.27", "1.28", "1.29"] diff --git a/site/content/en/blog/releases/1.40.0.md b/site/content/en/blog/releases/1.40.0.md index 9ad497ab3d..3d17761996 100644 --- a/site/content/en/blog/releases/1.40.0.md +++ b/site/content/en/blog/releases/1.40.0.md @@ -24,7 +24,7 @@ In this release, we’ve updated our Kuberenetes support to include version 1.29 - **Optimised GameServer Sub-Controller Queues**: We noticed that parts of the Agones controller were queuing _way_ too many items than they should, resulting in consuming more memory than was ideal. This fixes that, ensuring that _far_ fewer records get queued, resulting in a leaner memory footprint from the controller. -Check the README for details on features, installation and usage. +Check the README for details on features, installation and usage. **Breaking changes:** - Counters and Lists: Remove Bool Returns by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3738 @@ -49,7 +49,7 @@ Check the CHANGELOG for more details on changes. +See CHANGELOG for more details on changes. Images available with this release: @@ -70,7 +70,7 @@ Images available with this release: Helm chart available with this release: -- +- helm install agones agones/agones --version 1.40.0 > Make sure to add our stable helm repository using `helm repo add agones https://agones.dev/chart/stable` \ No newline at end of file diff --git a/site/content/en/blog/releases/1.41.0.md b/site/content/en/blog/releases/1.41.0.md new file mode 100644 index 0000000000..a1582812ac --- /dev/null +++ b/site/content/en/blog/releases/1.41.0.md @@ -0,0 +1,62 @@ +--- +title: "1.41.0 - Counters And Lists Beta Release, New PortPolicy and Multiple Feature Added!" +linktitle: "1.41.0" +date: "2024-06-04" +--- + +This is the 1.41.0 release of Agones. + +In this release, we’ve graduated the Counters and Lists feature to Beta, added a new _None_ PortPolicy in Gameserver if you only want in-cluster communications, and started work on in-place upgrades of Agones -- starting with providing SDK compatibility guarantees between versions. . Additionally, we now have Alpha support for the Passthrough PortPolicy on GKE Autopilot. + +- **Graduate Counters and Lists to Beta**: We’ve graduated the Counters and Lists Feature from Alpha to Beta, which also includes a new Counters and Lists documentation landing page. + +- **Node.js SDK for Counters and Lists**: We’ve rolled out the implementation in the Node.js SDK for the Counters and Lists feature. This update implements the Node.js client methods that simplify the process of tracking numeric counters and lists of values on GameServers. + +- **New “None” PortPolicy**: A new PortPolicy “None” has been added as an Alpha feature. This allows direct connection to a Gameserver instance using only the PodIP and the ContainerPort, if you do not want to use a _hostPort_ on your Nodes and/or keep traffic only within a cluster. + +- **Moved sdk-server to utilize Patch instead of Update**: This is the first step in building out support for In-place Agones upgrades and published SDK compatibility guarantees between Agones versions.. + +- **Alpha support for Passthrough PortPolicy on GKE Autopilot**: You can now enable Passthrough Port Policy support on GKE Autopilot with the feature flag _AutopilotPassthroughPort_. + +Check the README for details on features, installation and usage. + +**Implemented enhancements:** +- Configure Allocator Status Code by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3782 +- Graduate Counters and Lists to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3801 +- Passthrough autopilot - Adds an AutopilotPassthroughPort Feature Gate and new pod label by @vicentefb in https://github.com/googleforgames/agones/pull/3809 +- CountsAndLists: Move to Beta Protobuf by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3806 +- feat: support multiple port ranges by @nrwiersma in https://github.com/googleforgames/agones/pull/3747 +- Changes `sdk-server` to Patch instead of Update by @igooch in https://github.com/googleforgames/agones/pull/3803 +- Generate grpc for nodejs from alpha to beta by @lacroixthomas in https://github.com/googleforgames/agones/pull/3825 +- Update CountsAndLists from Alpha to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3824 +- feat(gameserver): New DirectToGameServer PortPolicy allows direct traffic to a GameServer by @daniellee in https://github.com/googleforgames/agones/pull/3807 +- Passthrough autopilot - Adds mutating webhook by @vicentefb in https://github.com/googleforgames/agones/pull/3833 +- Passthrough autopilot - added ports array case and updated unit tests by @vicentefb in https://github.com/googleforgames/agones/pull/3842 +- Nodejs counters and lists by @steven-supersolid in https://github.com/googleforgames/agones/pull/3726 +- Promote AutopilotPassthroughPort feature gate to Alpha by @vicentefb in https://github.com/googleforgames/agones/pull/3849 + +See CHANGELOG for more details on changes. + +Images available with this release: + +- [us-docker.pkg.dev/agones-images/release/agones-controller:1.41.0](https://us-docker.pkg.dev/agones-images/release/agones-controller:1.41.0) +- [us-docker.pkg.dev/agones-images/release/agones-sdk:1.41.0](https://us-docker.pkg.dev/agones-images/release/agones-sdk:1.41.0) +- [us-docker.pkg.dev/agones-images/release/agones-ping:1.41.0](https://us-docker.pkg.dev/agones-images/release/agones-ping:1.41.0) +- [us-docker.pkg.dev/agones-images/release/agones-allocator:1.41.0](https://us-docker.pkg.dev/agones-images/release/agones-allocator:1.41.0) +- [us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.8](https://us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.8) +- [us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.13](https://us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.13) +- [us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.17](https://us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.17) +- [us-docker.pkg.dev/agones-images/examples/crd-client:0.16](https://us-docker.pkg.dev/agones-images/examples/crd-client:0.16) +- [us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.10](https://us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.10) +- [us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.13](https://us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.13) +- [us-docker.pkg.dev/agones-images/examples/simple-game-server:0.32](https://us-docker.pkg.dev/agones-images/examples/simple-game-server:0.32) +- [us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.13](https://us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.13) +- [us-docker.pkg.dev/agones-images/examples/unity-simple-server:0.3](https://us-docker.pkg.dev/agones-images/examples/unity-simple-server:0.3) +- [us-docker.pkg.dev/agones-images/examples/xonotic-example:1.9](https://us-docker.pkg.dev/agones-images/examples/xonotic-example:1.9) + +Helm chart available with this release: + +- + helm install agones agones/agones --version 1.41.0 + +> Make sure to add our stable helm repository using `helm repo add agones https://agones.dev/chart/stable` \ No newline at end of file diff --git a/site/content/en/docs/Guides/Client SDKs/_index.md b/site/content/en/docs/Guides/Client SDKs/_index.md index 4bd83dcc28..48b8baf039 100644 --- a/site/content/en/docs/Guides/Client SDKs/_index.md +++ b/site/content/en/docs/Guides/Client SDKs/_index.md @@ -52,37 +52,6 @@ The SDKs will automatically discover and connect to the gRPC port specified in t If your game server requires using a REST client, it is advised to use the port from the environment variable, otherwise your game server will not be able to contact the SDK server if it is configured to use a non-default port. -{{% feature expiryVersion="1.41.0" %}} -## Function Reference - -While each of the SDKs are canonical to their languages, they all have the following -functions that implement the core responsibilities of the SDK. - -For language specific documentation, have a look at the respective source (linked above), -and the {{< ghlink href="examples" >}}examples{{< /ghlink >}}. - -Calling any of state changing functions mentioned below does not guarantee that GameServer Custom Resource object would actually change its state right after the call. For instance, it could be moved to the `Shutdown` state elsewhere (for example, when a fleet scales down), which leads to no changes in `GameServer` object. You can verify the result of this call by waiting for the desired state in a callback to WatchGameServer() function. - -Functions which changes GameServer state or settings are: - -1. Ready() -2. Shutdown() -3. SetLabel() -4. SetAnnotation() -5. Allocate() -6. Reserve() -7. Alpha().SetCapacity() -8. Alpha().PlayerConnect() -9. Alpha().PlayerDisconnect() -10. Alpha().SetCounterCount() -11. Alpha().IncrementCounter() -12. Alpha().DecrementCounter() -13. Alpha().SetCounterCapacity() -14. Alpha().AppendListValue() -15. Alpha().DeleteListValue() -16. Alpha().SetListCapacity() -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ## Function Reference While each of the SDKs are canonical to their languages, they all have the following @@ -111,7 +80,6 @@ Functions which changes GameServer state or settings are: 14. Beta().AppendListValue() 15. Beta().DeleteListValue() 16. Beta().SetListCapacity() -{{% /feature %}} ### Lifecycle Management @@ -262,12 +230,7 @@ observable through the Kubernetes API. ### Counters And Lists -{{% feature expiryVersion="1.41.0" %}} -{{< alpha title="Counters And Lists" gate="CountsAndLists" >}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} {{< beta title="Counters And Lists" gate="CountsAndLists" >}} -{{% /feature %}} The `Counters` and `Lists` features in the SDK offer a flexible configuration for tracking various entities like players, rooms, and sessions. @@ -296,93 +259,6 @@ to the capacity of that Counter or List. {{% /alert %}} -{{% feature expiryVersion="1.41.0" %}} -#### Counters - -All functions will return an error if the specified `key` is not predefined in the -[`GameServer.Spec.Counters`][gameserverspec] resource configuration. - -**Note:** For Counters, the default setting for the capacity is preset to 1000. It is recommended to avoid configuring the capacity to max(int64), as doing so could cause problems with [JSON Patch operations](https://github.com/googleforgames/agones/issues/3636). - -##### Alpha().GetCounterCount(key) - -This function retrieves either the [`GameServer.Status.Counters[key].Count`][gameserverstatus] or the SDK awaiting-batch -value for a given key, whichever is most up to date. - -##### Alpha().SetCounterCount(key, amount) - -This function sets the value of [`GameServer.Status.Counters[key].Count`][gameserverstatus] for the given key to the -passed in amount. This operation overwrites any previous values and the new value cannot exceed the Counter's capacity. - -##### Alpha().IncrementCounter(key, amount) - -This function increments [`GameServer.Status.Counters[key].Count`][gameserverstatus] for the given key by the passed in -non-negative amount. The function returns an error if the Counter is already at capacity (at time of operation), -indicating no increment will occur. - -##### Alpha().DecrementCounter(key, amount) - -This function decreases [`GameServer.Status.Counters[key].Count`][gameserverstatus] for the given key by the passed in -non-negative amount. It returns an error if the Counter's count is already at zero. - -##### Alpha().SetCounterCapacity(key, amount) - -This function sets the maximum [`GameServer.Status.Counters[key].Capacity`][gameserverstatus] for the given key by the -passed in non-negative amount. A capacity value of 0 indicates no capacity limit. - -##### Alpha().GetCounterCapacity(key) - -This function retrieves either the [`GameServer.Status.Counters[key].Capacity`][gameserverstatus] or the SDK -awaiting-batch value for the given key, whichever is most up to date. - -#### Lists - -All functions will return an error if the specified `key` is not predefined in the -[`GameServer.Spec.Lists`][gameserverspec] resource configuration. - -##### Alpha().AppendListValue(key, value) - -This function appends the specified string value to the List -in [`GameServer.Status.Lists[key].Values`][gameserverstatus]. - -An error is returned if the string already exists in the list or if the list is at capacity. - -##### Alpha().DeleteListValue(key, value) - -This function removes the specified string value from the List -in [`GameServer.Status.Lists[key].Values`][gameserverstatus]. - -An error is returned if the string does not exist in the list. - -##### Alpha().SetListCapacity(key, amount) - -This function sets the maximum capacity for the List at [`GameServer.Status.Lists[key].Capacity`][gameserverstatus]. - -The capacity value is required to be between 0 and 1000. - -##### Alpha().GetListCapacity(key) - -This function retrieves either the [`GameServer.Status.Lists[key].Capacity`][gameserverstatus] or the SDK -awaiting-batch value for the given key, whichever is most up to date. - -##### Alpha().GetListValues(key) - -This function retrieves either the [`GameServer.Status.Lists[key].Values`][gameserverstatus] or the SDK -awaiting-batch values array for the given key, whichever is most up to date. - -##### Alpha().ListContains(key, value) - -Convenience function, which returns if the specific string value exists in the results -of [`Alpha().GetListValues(key)`](#alphagetlistvalueskey). - -##### Alpha().GetListLength(key) - -Convenience function, which retrieves the length of the results of [`Alpha().GetListValues(key)`](#alphagetlistvalueskey). - -[gameserverspec]: {{< ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.GameServerSpec" >}} -[gameserverstatus]: {{< ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.GameServerStatus" >}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} #### Counters All functions will return an error if the specified `key` is not predefined in the @@ -467,7 +343,6 @@ Convenience function, which retrieves the length of the results of [`Beta().GetL [gameserverspec]: {{< ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.GameServerSpec" >}} [gameserverstatus]: {{< ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.GameServerStatus" >}} -{{% /feature %}} ### Player Tracking diff --git a/site/content/en/docs/Guides/Client SDKs/csharp.md b/site/content/en/docs/Guides/Client SDKs/csharp.md index 656b746a09..22cfd0d56c 100644 --- a/site/content/en/docs/Guides/Client SDKs/csharp.md +++ b/site/content/en/docs/Guides/Client SDKs/csharp.md @@ -146,161 +146,6 @@ agonesSDK.WatchGameServer((gameServer) => { Console.WriteLine($"Server - Watch { ``` -{{% feature expiryVersion="1.41.0" %}} -### Counters And Lists - -{{< alpha title="Counters And Lists" gate="CountsAndLists" >}} - -#### Counters - -##### Alpha: GetCounterCount - -Returns the Count for a Counter, given the Counter's key (name). Will error if the key was not -predefined in the GameServer resource on creation. - -```csharp -string key = "rooms"; -long count = await agones.Alpha().GetCounterCountAsync(key); -``` - -##### Alpha: SetCounterCount - -Sets a count to the given value. Use with care, as this will overwrite any previous invocations’ value. -Cannot be greater than Capacity. - -```csharp -string key = "rooms"; -long amount = 0; -await agones.Alpha().SetCounterCountAsync(key, amount); -``` - -##### Alpha: IncrementCounter - -Increases a counter by the given nonnegative integer amount. Will execute the increment operation -against the current CRD value. Will max at max(int64). Will error if the key was not predefined in -the GameServer resource on creation. Errors if the count is at the current capacity (to the latest -knowledge of the SDK), and no increment will occur. - -Note: A potential race condition here is that if count values are set from both the SDK and through -the K8s API (Allocation or otherwise), since the SDK append operation back to the CRD value is -batched asynchronous any value incremented past the capacity will be silently truncated. - -```csharp -string key = "rooms"; -long amount = 1; -await agones.Alpha().IncrementCounterAsync(key, amount); -``` - -##### Alpha: DecrementCounter - -Decreases the current count by the given nonnegative integer amount. The Counter Will not go below 0. -Will execute the decrement operation against the current CRD value. Errors if the count is at 0 (to -the latest knowledge of the SDK), and no decrement will occur. - -```csharp -string key = "rooms"; -long amount = 2; -await agones.Alpha().DecrementCounterAsync(key, amount); -``` - -##### Alpha: SetCounterCapacity - -Sets the capacity for the given Counter. A capacity of 0 is no capacity. - -```csharp -string key = "rooms"; -long amount = 0; -await agones.Alpha().SetCounterCapacityAsync(key, amount); -``` - -##### Alpha: GetCounterCapacity - -Returns the Capacity for a Counter, given the Counter's key (name). Will error if the key was not -predefined in the GameServer resource on creation. - -```csharp -string key = "rooms"; -long count = await agones.Alpha().GetCounterCapacityAsync(key); -``` -#### Lists - -##### Alpha: AppendListValue - -Appends a string to a List's values list, given the List's key (name) and the string value. Will -error if the string already exists in the list. Will error if the key was not predefined in the -GameServer resource on creation. Will error if the list is already at capacity. - -```csharp -string key = "players"; -string value = "player1"; -await agones.Alpha().AppendListValueAsync(key, value); -``` - -##### Alpha: DeleteListValue - -DeleteListValue removes a string from a List's values list, given the List's key (name) and the -string value. Will error if the string does not exist in the list. Will error if the key was not -predefined in the GameServer resource on creation. - -```csharp -string key = "players"; -string value = "player2"; -await agones.Alpha().DeleteListValueAsync(key, value); -``` - -##### Alpha: SetListCapacity - -Sets the capacity for a given list. Capacity must be between 0 and 1000. Will error if the key was -not predefined in the GameServer resource on creation. - -```csharp -string key = "players"; -long amount = 1000; -await agones.Alpha().SetListCapacityAsync(key, amount); -``` - -##### Alpha: GetListCapacity - -Returns the Capacity for a List, given the List's key (name). Will error if the key was not -predefined in the GameServer resource on creation. - -```csharp -string key = "players"; -long amount = await agones.Alpha().GetListCapacityAsync(key); -``` - -##### Alpha: ListContains - -Returns if a string exists in a List's values list, given the List's key (name) and the string value. -Search is case-sensitive. Will error if the key was not predefined in the GameServer resource on creation. - -```csharp -string key = "players"; -string value = "player3"; -bool contains = await agones.Alpha().ListContainsAsync(key, value); -``` - -##### Alpha: GetListLength - -GetListLength returns the length of the Values list for a List, given the List's key (name). Will -error if the key was not predefined in the GameServer resource on creation. - -```csharp -string key = "players"; -int listLength = await agones.Alpha().GetListLengthAsync(key); -``` - -##### Alpha: GetListValues - -Returns the > Values for a List, given the List's key (name). Will error if the key -was not predefined in the GameServer resource on creation. - -```csharp -string key = "players"; -List values = await agones.Alpha().GetListValuesAsync(key); -``` -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### Counters And Lists {{< beta title="Counters And Lists" gate="CountsAndLists" >}} @@ -453,7 +298,6 @@ was not predefined in the GameServer resource on creation. string key = "players"; List values = await agones.Beta().GetListValuesAsync(key); ``` -{{% /feature %}} ### Player Tracking diff --git a/site/content/en/docs/Guides/Client SDKs/rest.md b/site/content/en/docs/Guides/Client SDKs/rest.md index 013fd20d2d..30846ea193 100644 --- a/site/content/en/docs/Guides/Client SDKs/rest.md +++ b/site/content/en/docs/Guides/Client SDKs/rest.md @@ -238,107 +238,6 @@ Apply an Annotation with the prefix "agones.dev/sdk-" to the backing `GameServer curl -d '{"key": "foo", "value": "bar"}' -H "Content-Type: application/json" -X PUT http://localhost:${AGONES_SDK_HTTP_PORT}/metadata/annotation ``` -{{% feature expiryVersion="1.41.0" %}} -### Counters and Lists - -{{< alpha title="Counters and Lists" gate="CountsAndLists" >}} - -#### Counters - -In all the Counter examples, we retrieve the counter under the key `rooms` as if it was previously defined in [`GameServer.Spec.counters[room]`]({{< ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.GameServerSpec" >}}). - -For your own Counter REST requests, replace the value `rooms` with your own key in the path. - -##### Alpha: GetCounter -This function retrieves a specified counter by its key, `rooms`, and returns its information. - -###### Example - -```bash -curl -H "Content-Type: application/json" -X GET http://localhost:${AGONES_SDK_HTTP_PORT}/v1alpha1/counters/rooms -``` - -Response: -```json -{"name":"rooms", "count":"1", "capacity":"10"} -``` - -##### Alpha: UpdateCounter -This function updates the properties of the counter with the key `rooms`, such as its count and capacity, and returns the updated counter details. - -###### Example - -```bash -curl -d '{"count": "5", "capacity": "11"}' -H "Content-Type: application/json" -X PATCH http://localhost:${AGONES_SDK_HTTP_PORT}/v1alpha1/counters/rooms -``` - -Response: -```json -{"name":"rooms", "count":"5", "capacity":"11"} -``` - -#### Lists - -In all the List examples, we retrieve the list under the key `players` as if it was previously defined in [`GameServer.Spec.lists[players]`]({{< ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.GameServerSpec" >}}). - -For your own List REST based requests, replace the value `players` with your own key in the path. - -##### Alpha: GetList -This function retrieves the list's properties with the key `players`, returns the list's information. - -###### Example -```bash -curl -H "Content-Type: application/json" -X GET http://localhost:${AGONES_SDK_HTTP_PORT}/v1alpha1/lists/players -``` - -Response: -```json -{"name":"players", "capacity":"100", "values":["player0", "player1", "player2"]} -``` - -##### Alpha: UpdateList -This function updates the list's properties with the key `players`, such as its capacity and values, returns the updated list details. This will overwrite all existing List.Values with the update list request values. Use addValue or removeValue for modifying the List.Values field. - -###### Example - -```bash -curl -d '{"capacity": "120", "values": ["player3", "player4"]}' -H "Content-Type: application/json" -X PATCH http://localhost:${AGONES_SDK_HTTP_PORT}/v1alpha1/lists/players -``` - -Response: -```json -{"name":"players", "capacity":"120", "values":["player3", "player4"]} -``` - -##### Alpha: AddListValue -This function adds a new value to a list with the key `players` and returns the list with this addition. - -###### Example - -```bash -curl -d '{"value": "player9"}' -H "Content-Type: application/json" -X POST http://localhost:${AGONES_SDK_HTTP_PORT}/v1alpha1/lists/players:addValue -``` - -Response: -```json -{"name":"players", "capacity":"120", "values":["player3", "player4", "player9"]} -``` - -##### Alpha: RemoveListValue -This function removes a value from the list with the key `players` and returns updated list. - -###### Example - -```bash -curl -d '{"value": "player3"}' -H "Content-Type: application/json" -X POST http://localhost:${AGONES_SDK_HTTP_PORT}/v1alpha1/lists/players:removeValue -``` - -Response: -```json -{"name":"players", "capacity":"120", "values":["player4", "player9"]} -``` -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### Counters and Lists {{< beta title="Counters and Lists" gate="CountsAndLists" >}} @@ -437,7 +336,6 @@ Response: ```json {"name":"players", "capacity":"120", "values":["player4", "player9"]} ``` -{{% /feature %}} ### Player Tracking diff --git a/site/content/en/docs/Guides/counters-and-lists.md b/site/content/en/docs/Guides/counters-and-lists.md index b92aeb2217..02f90c7204 100644 --- a/site/content/en/docs/Guides/counters-and-lists.md +++ b/site/content/en/docs/Guides/counters-and-lists.md @@ -7,12 +7,7 @@ description: > Track, allocate and auto-scale based on user defined counters and lists stored on a `GameServer`. --- -{{% feature expiryVersion="1.41.0" %}} -{{< alpha title="Counters and Lists" gate="CountsAndLists" >}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} {{< beta title="Counters and Lists" gate="CountsAndLists" >}} -{{% /feature %}} Counters and Lists is provided as a way to track arbitrary integer counter values as well as lists of values against a `GameServer` by a user provided key. @@ -91,31 +86,6 @@ and `GameServer.Status.Lists[players].Capacity` is the current capacity for the Check the API reference for [`GameServerStatus`][gameserverstatus] for all the details on the data structure. -{{% feature expiryVersion="1.41.0" %}} -### SDK - -Counter and Lists values can be accessed through the Agones SDK when that information is required within your game -server process. - -For example, to retrieve the above `room` counter, each language SDK has some implementation of the -[`SDK.Alpha().GetCounterCount("room")`]({{< ref "/docs/Guides/Client SDKs/_index.md#alphagetcountercountkey" >}}) -function -that returns -the current value of the counter. Similarly, to retrieve the `players` list, we can use the -[`SDK.Alpha().GetListValues("players")`]({{< ref "/docs/Guides/Client SDKs/_index.md#alphagetlistvalueskey" >}}) -function. - -The special ability of the SDK retrieval operations, is that is also tracks any modifications that have been made -through the SDK, that have yet to be persisted to the `GameServer`, and will return values with that data included. - -This means that any modifications made to Counters and Lists sent through the SDK can be immediately and atomically -retrieved from the SDK from the game server binary with accurate information without having to wait for it be persisted -to the `GameServer`. - -See the [SDK Guide]({{< ref "/docs/Guides/Client SDKs/_index.md" >}}) for the full set of data retrieval functions -that are available. -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### SDK Counter and Lists values can be accessed through the Agones SDK when that information is required within your game @@ -138,28 +108,11 @@ to the `GameServer`. See the [SDK Guide]({{< ref "/docs/Guides/Client SDKs/_index.md" >}}) for the full set of data retrieval functions that are available. -{{% /feature %}} ## Manipulation We also have several ways to manipulate the Counter and List information stored on a `GameServer` instance, depending on your use case. -{{% feature expiryVersion="1.41.0" %}} -### SDK - -Counter and Lists values can be modified through the Agones SDK when you wish to be able to edit that information -within your game server process. - -For example, to increment the above `room` counter by 1, each language SDK has some implementation of the -[`SDK.Alpha().IncrementCounter("room", 1)`]({{< ref "/docs/Guides/Client SDKs/_index.md#alphaincrementcounterkey-amount" >}}) -function thatincrements the counter by 1. Similarly, to add the value `player1` to the `players` list, we can use the -[`SDK.Alpha().AppendListValue("players", "player1")`]({{< ref "/docs/Guides/Client SDKs/_index.md#alphaappendlistvaluekey-value" >}}) -function. - -See the [SDK Guide]({{< ref "/docs/Guides/Client SDKs/_index.md" >}}) for the full set of modification functions -that are available. -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### SDK Counter and Lists values can be modified through the Agones SDK when you wish to be able to edit that information @@ -173,7 +126,6 @@ function. See the [SDK Guide]({{< ref "/docs/Guides/Client SDKs/_index.md" >}}) for the full set of modification functions that are available. -{{% /feature %}} ### Allocation When performing a `GameServer` allocation, you may want to manipulate the Counter and/or List information atomically diff --git a/site/content/en/docs/Guides/feature-stages.md b/site/content/en/docs/Guides/feature-stages.md index fe3139be2c..9e5b705ab8 100644 --- a/site/content/en/docs/Guides/feature-stages.md +++ b/site/content/en/docs/Guides/feature-stages.md @@ -24,20 +24,6 @@ that can be found in the [Helm configuration]({{< ref "/docs/Installation/Instal The current set of `alpha` and `beta` feature gates: -{{% feature expiryVersion="1.41.0" %}} -| Feature Name | Gate | Default | Stage | Since | -|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------|----------|---------|--------| -| [DisableResyncOnSDKServer](https://github.com/googleforgames/agones/issues/3377) | `DisableResyncOnSDKServer` | Enabled | `Beta` | 1.40.0 | -| [Support Passthrough on GKE Autopilot](https://github.com/googleforgames/agones/issues/3721) | `AutopilotPassthroughPort` | Disabled | `Alpha` | 1.40.0 | -| [CountsAndLists](https://github.com/googleforgames/agones/issues/2716) | `CountsAndLists` | Disabled | `Alpha` | 1.37.0 | -| [Support for Extended Duration Pods on GKE Autopilot (*1.28+ only*)](https://github.com/googleforgames/agones/issues/3386) | `GKEAutopilotExtendedDurationPods` | Disabled | `Alpha` | 1.37.0 | -| [GameServer player capacity filtering on GameServerAllocations](https://github.com/googleforgames/agones/issues/1239) | `PlayerAllocationFilter` | Disabled | `Alpha` | 1.14.0 | -| [Player Tracking]({{< ref "/docs/Guides/player-tracking.md" >}}) | `PlayerTracking` | Disabled | `Alpha` | 1.6.0 | -| Example Gate (not in use) | `Example` | Disabled | None | 0.13.0 | - -[fleet-updates]: {{% relref "./fleet-updates.md#notifying-gameservers-on-fleet-updatedownscale" %}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} | Feature Name | Gate | Default | Stage | Since | |-----------------------------------------------------------------------------------------------------------------------------|------------------------------------|----------|---------|--------| | [CountsAndLists](https://github.com/googleforgames/agones/issues/2716) | `CountsAndLists` | Enabled | `Beta` | 1.41.0 | @@ -51,7 +37,6 @@ The current set of `alpha` and `beta` feature gates: | Example Gate (not in use) | `Example` | Disabled | None | 0.13.0 | [fleet-updates]: {{% relref "./fleet-updates.md#notifying-gameservers-on-fleet-updatedownscale" %}} -{{% /feature %}} {{< alert title="Note" color="info" >}} If you aren't sure if Feature Flags have been set correctly, have a look at the diff --git a/site/content/en/docs/Guides/player-tracking.md b/site/content/en/docs/Guides/player-tracking.md index 3258726a15..6932371049 100644 --- a/site/content/en/docs/Guides/player-tracking.md +++ b/site/content/en/docs/Guides/player-tracking.md @@ -7,16 +7,6 @@ description: > Track player connections, disconnections, counts and capacities through the Agones SDK --- -{{% feature expiryVersion="1.41.0" %}} -{{% pageinfo color="info" %}} -[Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) will eventually replace the Alpha functionality -of Player Tracking, which will subsequently be removed from Agones. - -If you are currently using this Alpha feature, we would love for you to test (and ideally migrate to!) this new -functionality to Counters and Lists to ensure it meet all your needs. -{{% /pageinfo %}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} {{% pageinfo color="info" %}} [Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) will eventually replace the Beta functionality of Player Tracking, which will subsequently be removed from Agones. @@ -24,7 +14,6 @@ of Player Tracking, which will subsequently be removed from Agones. If you are currently using this Beta feature, we would love for you to test (and ideally migrate to!) this new functionality to Counters and Lists to ensure it meet all your needs. {{% /pageinfo %}} -{{% /feature %}} {{< alpha title="Player Tracking" gate="PlayerTracking" >}} diff --git a/site/content/en/docs/Installation/Creating Cluster/gke.md b/site/content/en/docs/Installation/Creating Cluster/gke.md index fbee9c9cbb..52173441c3 100644 --- a/site/content/en/docs/Installation/Creating Cluster/gke.md +++ b/site/content/en/docs/Installation/Creating Cluster/gke.md @@ -126,10 +126,8 @@ whether these constraints impact your workloads: supported. * **[Host port policy]({{}}):** `Dynamic` is supported, which is the Agones default. `Static` and `Passthrough` are not supported. -{{% feature publishVersion="1.41.0" %}} * **[Port range]({{}}):** `default` is supported, which is the Agones default. Additional port ranges are not supported. -{{% /feature %}} * **Seccomp profile:** Agones sets the seccomp profile to `Unconfined` to avoid unexpected container creation delays that might occur because Autopilot enables the diff --git a/site/content/en/docs/Installation/Install Agones/helm.md b/site/content/en/docs/Installation/Install Agones/helm.md index 3f83c4082f..c5381d11c0 100644 --- a/site/content/en/docs/Installation/Install Agones/helm.md +++ b/site/content/en/docs/Installation/Install Agones/helm.md @@ -148,45 +148,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.image.extensions.pullPolicy` | Image pull policy for extensions | `IfNotPresent` | -{{% feature expiryVersion="1.41.0" %}} -### Agones Controller - -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `agones.controller.replicas` | The number of replicas to run in the `agones-controller` deployment. | `2` | -| `agones.controller.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with `maxUnavailable` | `1` | -| `agones.controller.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage Mutually Exclusive with `minAvailable` | \`\` | -| `agones.controller.http.port` | Port to use for liveness probe service and metrics | `8080` | -| `agones.controller.healthCheck.initialDelaySeconds` | Initial delay before performing the first probe (in seconds) | `3` | -| `agones.controller.healthCheck.periodSeconds` | Seconds between every liveness probe (in seconds) | `3` | -| `agones.controller.healthCheck.failureThreshold` | Number of times before giving up (in seconds) | `3` | -| `agones.controller.healthCheck.timeoutSeconds` | Number of seconds after which the probe times out (in seconds) | `1` | -| `agones.controller.resources` | Controller [resource requests/limit][resources] | `{}` | -| `agones.controller.generateTLS` | Set to true to generate TLS certificates or false to provide your own certificates | `true` | -| `agones.controller.tlsCert` | Custom TLS certificate provided as a string | \`\` | -| `agones.controller.tlsKey` | Custom TLS private key provided as a string | \`\` | -| `agones.controller.nodeSelector` | Controller [node labels][nodeSelector] for pod assignment | `{}` | -| `agones.controller.tolerations` | Controller [toleration][toleration] labels for pod assignment | `[]` | -| `agones.controller.affinity` | Controller [affinity][affinity] settings for pod assignment | `{}` | -| `agones.controller.annotations` | [Annotations][annotations] added to the Agones controller pods | `{}` | -| `agones.controller.numWorkers` | Number of workers to spin per resource type | `100` | -| `agones.controller.apiServerQPS` | Maximum sustained queries per second that controller should be making against API Server | `400` | -| `agones.controller.apiServerQPSBurst` | Maximum burst queries per second that controller should be making against API Server | `500` | -| `agones.controller.logLevel` | Agones Controller Log level. Log only entries with that severity and above | `info` | -| `agones.controller.persistentLogs` | Store Agones controller logs in a temporary volume attached to a container for debugging | `true` | -| `agones.controller.persistentLogsSizeLimitMB` | Maximum total size of all Agones container logs in MB | `10000` | -| `agones.controller.disableSecret` | Disables the creation of any allocator secrets. If true, you MUST provide the `{agones.releaseName}-cert` secrets before installation. | `false` | -| `agones.controller.customCertSecretPath` | Remap cert-manager path to server.crt and server.key | `{}` | -| `agones.controller.allocationApiService.annotations` | [Annotations][annotations] added to the Agones apiregistration | `{}` | -| `agones.controller.allocationApiService.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.controller.validatingWebhook.annotations` | [Annotations][annotations] added to the Agones validating webhook | `{}` | -| `agones.controller.validatingWebhook.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.controller.mutatingWebhook.annotations` | [Annotations][annotations] added to the Agones mutating webhook | `{}` | -| `agones.controller.mutatingWebhook.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.controller.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in controller mode | `500ms` | -| `agones.controller.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### Agones Controller | Parameter | Description | Default | @@ -223,7 +184,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.controller.mutatingWebhook.disableCaBundle` | **Deprecated**. Use `agones.extensions.mutatingWebhook.disableCaBundle` instead. Disable ca-bundle so it can be injected by cert-manager | `false` | | `agones.controller.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in controller mode | `500ms` | | `agones.controller.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} ### Ping Service @@ -262,66 +222,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.ping.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage Mutually Exclusive with `minAvailable` | \`\` | | `agones.ping.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% feature expiryVersion="1.41.0" %}} -### Allocator Service - - -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `agones.allocator.apiServerQPS` | Maximum sustained queries per second that an allocator should be making against API Server | `400` | -| `agones.allocator.apiServerQPSBurst` | Maximum burst queries per second that an allocator should be making against API Server | `500` | -| `agones.allocator.remoteAllocationTimeout` | Remote allocation call timeout. | `10s` | -| `agones.allocator.totalRemoteAllocationTimeout` | Total remote allocation timeout including retries. | `30s` | -| `agones.allocator.logLevel` | Agones Allocator Log level. Log only entries with that severity and above | `info` | -| `agones.allocator.install` | Whether to install the [allocator service][allocator] | `true` | -| `agones.allocator.replicas` | The number of replicas to run in the deployment | `3` | -| `agones.allocator.service.name` | Service name for the allocator | `agones-allocator` | -| `agones.allocator.service.serviceType` | The [Service Type][service] of the HTTP Service | `LoadBalancer` | -| `agones.allocator.service.clusterIP` | The [Cluster IP][clusterIP] of the Agones allocator. If you want [Headless Service][headless-service] for Agones Allocator, you can set `None` to clusterIP. | \`\` | -| `agones.allocator.service.loadBalancerIP` | The [Load Balancer IP][loadBalancer] of the Agones allocator load balancer. Only works if the Kubernetes provider supports this option. | \`\` | -| `agones.allocator.service.loadBalancerSourceRanges` | The [Load Balancer SourceRanges][loadBalancer] of the Agones allocator load balancer. Only works if the Kubernetes provider supports this option. | `[]` | -| `agones.allocator.service.annotations` | [Annotations][annotations] added to the Agones allocator service | `{}` | -| `agones.allocator.service.http.enabled` | If true the [allocator service][allocator] will respond to [REST requests][rest-requests] | `true` | -| `agones.allocator.service.http.appProtocol` | The `appProtocol` to set on the Service for the http allocation port. If left blank, no value is set. | `` | -| `agones.allocator.service.http.port` | The port that is exposed externally by the [allocator service][allocator] for [REST requests][rest-requests] | `443` | -| `agones.allocator.service.http.portName` | The name of exposed port | `http` | -| `agones.allocator.service.http.targetPort` | The port that is used by the allocator pod to listen for [REST requests][rest-requests]. Note that the allocator server cannot bind to low numbered ports. | `8443` | -| `agones.allocator.service.http.nodePort` | If the ServiceType is set to "NodePort", this is the NodePort that the allocator http service is exposed on. | `30000-32767` | -| `agones.allocator.service.grpc.enabled` | If true the [allocator service][allocator] will respond to [gRPC requests][grpc-requests] | `true` | -| `agones.allocator.service.grpc.port` | The port that is exposed externally by the [allocator service][allocator] for [gRPC requests][grpc-requests] | `443` | -| `agones.allocator.service.grpc.portName` | The name of exposed port | `` | -| `agones.allocator.service.grpc.appProtocol` | The `appProtocol` to set on the Service for the gRPC allocation port. If left blank, no value is set. | `` | -| `agones.allocator.service.grpc.nodePort` | If the ServiceType is set to "NodePort", this is the NodePort that the allocator gRPC service is exposed on. | `30000-32767` | -| `agones.allocator.service.grpc.targetPort` | The port that is used by the allocator pod to listen for [gRPC requests][grpc-requests]. Note that the allocator server cannot bind to low numbered ports. | `8443` | -| `agones.allocator.generateClientTLS` | Set to true to generate client TLS certificates or false to provide certificates in `certs/allocator/allocator-client.default/*` | `true` | -| `agones.allocator.generateTLS` | Set to true to generate TLS certificates or false to provide your own certificates | `true` | -| `agones.allocator.disableMTLS` | Turns off client cert authentication for incoming connections to the allocator. | `false` | -| `agones.allocator.disableTLS` | Turns off TLS security for incoming connections to the allocator. | `false` | -| `agones.allocator.disableSecretCreation` | Disables the creation of any allocator secrets. If true, you MUST provide the `allocator-tls`, `allocator-tls-ca`, and `allocator-client-ca` secrets before installation. | `false` | -| `agones.allocator.tlsCert` | Custom TLS certificate provided as a string | \`\` | -| `agones.allocator.tlsKey` | Custom TLS private key provided as a string | \`\` | -| `agones.allocator.clientCAs` | A map of secret key names to allowed client CA certificates provided as strings | `{}` | -| `agones.allocator.tolerations` | Allocator [toleration][toleration] labels for pod assignment | `[]` | -| `agones.allocator.affinity` | Allocator [affinity][affinity] settings for pod assignment | `{}` | -| `agones.allocator.annotations` | [Annotations][annotations] added to the Agones allocator pods | `{}` | -| `agones.allocator.resources` | Allocator pods [resource requests/limit][resources] | `{}` | -| `agones.allocator.labels` | [Labels][labels] Added to the Agones Allocator pods | `{}` | -| `agones.allocator.readiness.initialDelaySeconds` | Initial delay before performing the first probe (in seconds) | `3` | -| `agones.allocator.readiness.periodSeconds` | Seconds between every liveness probe (in seconds) | `3` | -| `agones.allocator.readiness.failureThreshold` | Number of times before giving up (in seconds) | `3` | -| `agones.allocator.nodeSelector` | Allocator [node labels][nodeSelector] for pod assignment | `{}` | -| `agones.allocator.serviceMetrics.name` | Second Service name for the allocator | `agones-allocator-metrics-service` | -| `agones.allocator.serviceMetrics.annotations` | [Annotations][annotations] added to the Agones allocator second Service | `{}` | -| `agones.allocator.serviceMetrics.http.port` | The port that is exposed within cluster by the [allocator service][allocator] for http requests | `8080` | -| `agones.allocator.serviceMetrics.http.portName` | The name of exposed port | `http` | -| `agones.allocator.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in allocator mode | `500ms` | -| `agones.allocator.updateStrategy` | The [strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) to apply to the ping deployment | `{}` | -| `agones.allocator.pdb.enabled` | Set to `true` to enable the creation of a [PodDisruptionBudget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) for the allocator deployment | `false` | -| `agones.allocator.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with `maxUnavailable` | `1` | -| `agones.allocator.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage. Mutually Exclusive with `minAvailable` | \`\` | -| `agones.allocator.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### Allocator Service @@ -380,48 +280,8 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.allocator.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with `maxUnavailable` | `1` | | `agones.allocator.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage. Mutually Exclusive with `minAvailable` | \`\` | | `agones.allocator.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} - -{{% feature expiryVersion="1.41.0" %}} -### Extensions -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `agones.extensions.http.port` | Port to use for liveness probe service and metrics | `8080` | -| `agones.extensions.healthCheck.initialDelaySeconds` | Initial delay before performing the first probe (in seconds) | `3` | -| `agones.extensions.healthCheck.periodSeconds` | Seconds between every liveness probe (in seconds) | `3` | -| `agones.extensions.healthCheck.failureThreshold` | Number of times before giving up (in seconds) | `3` | -| `agones.extensions.healthCheck.timeoutSeconds` | Number of seconds after which the probe times out (in seconds) | `1` | -| `agones.extensions.resources` | Extensions [resource requests/limit][resources] | `{}` | -| `agones.extensions.generateTLS` | Set to true to generate TLS certificates or false to provide your own certificates | `true` | -| `agones.extensions.tlsCert` | Custom TLS certificate provided as a string | \`\` | -| `agones.extensions.tlsKey` | Custom TLS private key provided as a string | \`\` | -| `agones.extensions.nodeSelector` | Extensions [node labels][nodeSelector] for pod assignment | `{}` | -| `agones.extensions.tolerations` | Extensions [toleration][toleration] labels for pod assignment | `[]` | -| `agones.extensions.affinity` | Extensions [affinity][affinity] settings for pod assignment | `{}` | -| `agones.extensions.annotations` | [Annotations][annotations] added to the Agones extensions pods | `{}` | -| `agones.extensions.numWorkers` | Number of workers to spin per resource type | `100` | -| `agones.extensions.apiServerQPS` | Maximum sustained queries per second that extensions should be making against API Server | `400` | -| `agones.extensions.apiServerQPSBurst` | Maximum burst queries per second that extensions should be making against API Server | `500` | -| `agones.extensions.logLevel` | Agones Extensions Log level. Log only entries with that severity and above | `info` | -| `agones.extensions.persistentLogs` | Store Agones extensions logs in a temporary volume attached to a container for debugging | `true` | -| `agones.extensions.persistentLogsSizeLimitMB` | Maximum total size of all Agones container logs in MB | `10000` | -| `agones.extensions.disableSecret` | Disables the creation of any allocator secrets. If true, you MUST provide the `{agones.releaseName}-cert` secrets before installation. | `false` | -| `agones.extensions.customCertSecretPath` | Remap cert-manager path to server.crt and server.key | `{}` | -| `agones.extensions.allocationApiService.annotations` | [Annotations][annotations] added to the Agones apiregistration | `{}` | -| `agones.extensions.allocationApiService.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.extensions.validatingWebhook.annotations` | [Annotations][annotations] added to the Agones validating webhook | `{}` | -| `agones.extensions.validatingWebhook.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.extensions.mutatingWebhook.annotations` | [Annotations][annotations] added to the Agones mutating webhook | `{}` | -| `agones.extensions.mutatingWebhook.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.extensions.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in controller mode | `500ms` | -| `agones.extensions.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with maxUnavailable | `1` | -| `agones.extensions.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage Mutually Exclusive with `minAvailable` | \`\` | -| `agones.extensions.replicas` | The number of replicas to run in the deployment | `2` | -| `agones.extensions.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ### Extensions | Parameter | Description | Default | @@ -458,7 +318,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.extensions.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage. Mutually Exclusive with `minAvailable` | \`\` | | `agones.extensions.replicas` | The number of replicas to run in the deployment | `2` | | `agones.extensions.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} ### GameServers @@ -470,7 +329,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `gameservers.maxPort` | Maximum port to use for dynamic port allocation | `8000` | | `gameservers.podPreserveUnknownFields` | Disable [field pruning][pruning] and schema validation on the Pod template for a [GameServer][gameserver] definition | `false` | {{% /feature %}} -{{% feature publishVersion="1.41.0" %}} | Parameter | Description | Default | |----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| | `gameservers.namespaces` | a list of namespaces you are planning to use to deploy game servers | `["default"]` | @@ -478,7 +336,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `gameservers.maxPort` | Maximum port to use for dynamic port allocation | `8000` | | `gameservers.additionalPortRanges` | Port ranges from which to do named dynamic port allocation. Example:
additionalPortRanges:
  game: [9000, 10000] | `{}` | | `gameservers.podPreserveUnknownFields` | Disable [field pruning][pruning] and schema validation on the Pod template for a [GameServer][gameserver] definition | `false` | -{{% /feature %}} ### Helm Installation diff --git a/site/content/en/docs/Installation/_index.md b/site/content/en/docs/Installation/_index.md index 5d3ec19eef..4cfec228e9 100644 --- a/site/content/en/docs/Installation/_index.md +++ b/site/content/en/docs/Installation/_index.md @@ -47,7 +47,8 @@ The following table lists recent Agones versions and their corresponding require | Agones version | Kubernetes version(s) | | -------------- | ------------------ | -| 1.40 | {{% k8s-version %}} | +| 1.41 | {{% k8s-version %}} | +| 1.40 | 1.27, 1.28, 1.29 | | 1.39 | 1.27, 1.28, 1.29 | | 1.38 | 1.26, 1.27, 1.28 | | 1.37 | 1.26, 1.27, 1.28 | diff --git a/site/content/en/docs/Installation/upgrading.md b/site/content/en/docs/Installation/upgrading.md index 0e157ce273..5d03152808 100644 --- a/site/content/en/docs/Installation/upgrading.md +++ b/site/content/en/docs/Installation/upgrading.md @@ -133,7 +133,6 @@ upgrades. 1. Close your maintenance window. 7. Congratulations - you have now upgraded to a new version of Kubernetes! 👍 -{{% feature publishVersion="1.41.0" %}} ## SDK Compatibility Guarantees The SDK compatibility contract aims to ensure smooth upgrades and reduce the need for frequent @@ -217,4 +216,3 @@ Client SDK is implemented. | Player Tracking | GetPlayerCount | | | Legacy | | Player Tracking | PlayerDisconnect | | | Legacy | -{{% /feature %}} diff --git a/site/content/en/docs/Integration Patterns/player-capacity.md b/site/content/en/docs/Integration Patterns/player-capacity.md index f73ea68ecb..59588e76ff 100644 --- a/site/content/en/docs/Integration Patterns/player-capacity.md +++ b/site/content/en/docs/Integration Patterns/player-capacity.md @@ -7,18 +7,6 @@ description: > Find a `GameServer` that has room for a specific number of players. --- -{{% feature expiryVersion="1.41.0" %}} -{{% pageinfo color="info" %}} -[Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) will eventually replace the Alpha functionality -of Player Tracking, which will subsequently be removed from Agones. - -If you are currently using this Alpha feature, we would love for you to test (and ideally migrate to!) this new -functionality to Counters and Lists to ensure it meet all your needs. - -This document will be updated to utilise Counters and Lists in the near future. -{{% /pageinfo %}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} {{% pageinfo color="info" %}} [Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) will eventually replace the Beta functionality of Player Tracking, which will subsequently be removed from Agones. @@ -28,7 +16,6 @@ functionality to Counters and Lists to ensure it meet all your needs. This document will be updated to utilise Counters and Lists in the near future. {{% /pageinfo %}} -{{% /feature %}} {{< alpha title="Player Tracking and Allocation Player Filter" diff --git a/site/content/en/docs/Reference/fleet.md b/site/content/en/docs/Reference/fleet.md index e54e80dcd8..16e495109b 100644 --- a/site/content/en/docs/Reference/fleet.md +++ b/site/content/en/docs/Reference/fleet.md @@ -13,98 +13,6 @@ Like any other Kubernetes resource you describe a `Fleet`'s desired state via a A full `Fleet` specification is available below and in the {{< ghlink href="examples/fleet.yaml" >}}example folder{{< /ghlink >}} for reference : -{{% feature expiryVersion="1.41.0" %}} -```yaml -apiVersion: "agones.dev/v1" -kind: Fleet -# Fleet Metadata -# {{< k8s-api-version href="#objectmeta-v1-meta" >}} -metadata: - name: fleet-example -spec: - # the number of GameServers to keep Ready or Allocated in this Fleet - replicas: 2 - # defines how GameServers are organised across the cluster. - # Options include: - # "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack - # resources - # "Distributed" is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire - # cluster - scheduling: Packed - # a GameServer template - see: - # https://agones.dev/site/docs/reference/gameserver/ for all the options - strategy: - # The replacement strategy for when the GameServer template is changed. Default option is "RollingUpdate", - # "RollingUpdate" will increment by maxSurge value on each iteration, while decrementing by maxUnavailable on each - # iteration, until all GameServers have been switched from one version to another. - # "Recreate" terminates all non-allocated GameServers, and starts up a new set with the new details to replace them. - type: RollingUpdate - # Only relevant when `type: RollingUpdate` - rollingUpdate: - # the amount to increment the new GameServers by. Defaults to 25% - maxSurge: 25% - # the amount to decrements GameServers by. Defaults to 25% - maxUnavailable: 25% - # Labels and/or Annotations to apply to overflowing GameServers when the number of Allocated GameServers is more - # than the desired replicas on the underlying `GameServerSet` - allocationOverflow: - labels: - mykey: myvalue - version: "" # empty an existing label value - annotations: - otherkey: setthisvalue - # - # [Stage:Alpha] - # [FeatureFlag:CountsAndLists] - # Which gameservers in the Fleet are most important to keep around - impacts scale down logic. - # priorities: - # - type: Counter # Sort by a “Counter” - # key: rooms # The name of the Counter. No impact if no GameServer found. - # order: Descending # Default is "Ascending" so smaller available capacity will be removed first on down scaling. - # - type: List # Sort by a “List” - # key: players # The name of the List. No impact if no GameServer found. - # order: Ascending # Default is "Ascending" so smaller available capacity will be removed first on down scaling. - # - template: - # GameServer metadata - metadata: - labels: - foo: bar - # GameServer specification - spec: - ports: - - name: default - portPolicy: Dynamic - containerPort: 26000 - health: - initialDelaySeconds: 30 - periodSeconds: 60 - # Parameters for game server sidecar - sdkServer: - logLevel: Info - grpcPort: 9357 - httpPort: 9358 - # - # [Stage:Alpha] - # [FeatureFlag:CountsAndLists] - # Counts and Lists provides the configuration for generic (player, room, etc.) tracking features. - # counters: - # rooms: - # count: 0 # Initial Value - # capacity: 10 - # lists: - # players: - # values: [] - # - # The GameServer's Pod template - template: - spec: - containers: - - name: simple-game-server - image: {{< example-image >}} -``` -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ```yaml apiVersion: "agones.dev/v1" kind: Fleet @@ -193,7 +101,6 @@ spec: - name: simple-game-server image: {{< example-image >}} ``` -{{% /feature %}} Since Agones defines a new [Custom Resources Definition (CRD)](https://kubernetes.io/docs/concepts/api-extension/custom-resources/) @@ -208,39 +115,6 @@ This is a very common pattern in the Kubernetes ecosystem. The length of the `name` field of the fleet should be at most 63 characters. -{{% feature expiryVersion="1.41.0" %}} -The `spec` field is the actual `Fleet` specification and it is composed as follow: - -- `replicas` is the number of `GameServers` to keep Ready or Allocated in this Fleet -- `scheduling` defines how GameServers are organised across the cluster. Affects backing Pod scheduling, as well as scale - down mechanics. - "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack - resources. "Distributed" is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire - cluster. See [Scheduling and Autoscaling]({{< relref "../Advanced/scheduling-and-autoscaling.md" >}}) for more details. -- `strategy` is the `GameServer` replacement strategy for when the `GameServer` template is edited. - - `type` is replacement strategy for when the GameServer template is changed. Default option is "RollingUpdate", but "Recreate" is also available. - - `RollingUpdate` will increment by `maxSurge` value on each iteration, while decrementing by `maxUnavailable` on each iteration, until all GameServers have been switched from one version to another. - - `Recreate` terminates all non-allocated `GameServers`, and starts up a new set with the new `GameServer` configuration to replace them. - - `rollingUpdate` is only relevant when `type: RollingUpdate` - - `maxSurge` is the amount to increment the new GameServers by. Defaults to 25% - - `maxUnavailable` is the amount to decrements GameServers by. Defaults to 25% -- `allocationOverflow` (Beta, requires `FleetAllocationOverflow` flag) The labels and/or Annotations to apply to - GameServers when the number of Allocated GameServers exceeds the desired replicas in the underlying - `GameServerSet`. - - `labels` the map of labels to be applied - - `annotations` the map of annotations to be applied - - `Fleet's Scheduling Strategy`: The GameServers associated with the GameServerSet are sorted based on either `Packed` or `Distributed` strategy. - - `Packed`: Agones maximizes resource utilization by trying to populate nodes that are already in use before allocating GameServers to other nodes. - - `Distributed`: Agones employs this strategy to spread out GameServer allocations, ensuring an even distribution of GameServers across the available nodes. -- `priorities`: (Alpha, requires `CountsAndLists` feature flag): Defines which `GameServers` in the Fleet are most - important to keep around - impacts scale down logic. - - `type`: Sort by a "Counter" or a "List". - - `key`: The name of the Counter or List. If not found on the GameServer, has no impact. - - `order`: Order: Sort by “Ascending” or “Descending”. “Descending” a bigger available capacity is preferred. “Ascending” would be smaller available capacity is preferred. -- `template` a full `GameServer` configuration template. - See the [GameServer]({{< relref "gameserver.md" >}}) reference for all available fields. -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} The `spec` field is the actual `Fleet` specification and it is composed as follow: - `replicas` is the number of `GameServers` to keep Ready or Allocated in this Fleet @@ -271,7 +145,6 @@ The `spec` field is the actual `Fleet` specification and it is composed as follo - `order`: Order: Sort by “Ascending” or “Descending”. “Descending” a bigger available capacity is preferred. “Ascending” would be smaller available capacity is preferred. - `template` a full `GameServer` configuration template. See the [GameServer]({{< relref "gameserver.md" >}}) reference for all available fields. -{{% /feature %}} ## Fleet Scale Subresource Specification diff --git a/site/content/en/docs/Reference/gameserver.md b/site/content/en/docs/Reference/gameserver.md index da94f05532..b27461c28d 100644 --- a/site/content/en/docs/Reference/gameserver.md +++ b/site/content/en/docs/Reference/gameserver.md @@ -9,115 +9,6 @@ description: > A full GameServer specification is available below and in the {{< ghlink href="examples/gameserver.yaml" >}}example folder{{< /ghlink >}} for reference : -{{% feature expiryVersion="1.41.0" %}} -```yaml -apiVersion: "agones.dev/v1" -kind: GameServer -# GameServer Metadata -# {{< k8s-api-version href="#objectmeta-v1-meta" >}} -metadata: - # generateName: "gds-example" # generate a unique name, with the given prefix - name: "gds-example" # set a fixed name -spec: - # if there is more than one container, specify which one is the game server - container: example-server - # Array of ports that can be exposed as direct connections to the game server container - ports: - # name is a descriptive name for the port - - name: default - # portPolicy has three options: - # - "Dynamic" (default) the system allocates a free hostPort for the gameserver, for game clients to connect to - # - "Static", user defines the hostPort that the game client will connect to. Then onus is on the user to ensure that the - # port is available. When static is the policy specified, `hostPort` is required to be populated - # - "Passthrough" dynamically sets the `containerPort` to the same value as the dynamically selected hostPort. - # This will mean that users will need to lookup what port has been opened through the server side SDK. - portPolicy: Static - # The name of the container to open the port on. Defaults to the game server container if omitted or empty. - container: simple-game-server - # the port that is being opened on the game server process - containerPort: 7654 - # the port exposed on the host, only required when `portPolicy` is "Static". Overwritten when portPolicy is "Dynamic". - hostPort: 7777 - # protocol being used. Defaults to UDP. TCP and TCPUDP are other options - # - "UDP" (default) use the UDP protocol - # - "TCP", use the TCP protocol - # - "TCPUDP", uses both TCP and UDP, and exposes the same hostPort for both protocols. - # This will mean that it adds an extra port, and the first port is set to TCP, and second port set to UDP - protocol: UDP - # Health checking for the running game server - health: - # Disable health checking. defaults to false, but can be set to true - disabled: false - # Number of seconds after the container has started before health check is initiated. Defaults to 5 seconds - initialDelaySeconds: 5 - # If the `Health()` function doesn't get called at least once every period (seconds), then - # the game server is not healthy. Defaults to 5 - periodSeconds: 5 - # Minimum consecutive failures for the health probe to be considered failed after having succeeded. - # Defaults to 3. Minimum value is 1 - failureThreshold: 3 - # Parameters for game server sidecar - sdkServer: - # sdkServer log level parameter has three options: - # - "Info" (default) The SDK server will output all messages except for debug messages - # - "Debug" The SDK server will output all messages including debug messages - # - "Error" The SDK server will only output error messages - logLevel: Info - # grpcPort and httpPort control what ports the sdkserver listens on. - # Starting with Agones 1.2 the default grpcPort is 9357 and the default - # httpPort is 9358. In earlier releases, the defaults were 59357 and 59358 - # respectively but as these were in the ephemeral port range they could - # conflict with other TCP connections. - grpcPort: 9357 - httpPort: 9358 - # [Stage:Alpha] - # [FeatureFlag:PlayerTracking] - # Players provides the configuration for player tracking features. - # Commented out since Alpha, and disabled by default - # players: - # # set this GameServer's initial player capacity - # initialCapacity: 10 - # - # [Stage:Alpha] - # [FeatureFlag:CountsAndLists] - # Counts and Lists provides the configuration for generic (player, room, session, etc.) tracking features. - # Commented out since Alpha, and disabled by default - # counters: # counters are int64 counters that can be incremented and decremented by set amounts. Keys must be declared at GameServer creation time. - # rooms: # arbitrary key. - # count: 1 # initial value can be set. - # capacity: 100 # (Optional) Defaults to 1000 and setting capacity to max(int64) may lead to issues and is not recommended. See GitHub issue https://github.com/googleforgames/agones/issues/3636 for more details. - # lists: # lists are lists of values stored against this GameServer that can be added and deleted from. Keys must be declared at GameServer creation time. - # players: # an empty list, with a capacity set to 10. - # capacity: 10 # capacity value, defaults to 1000. - # rooms: # note that it is allowed to have the same key name with one used in counters - # capacity: 333 - # values: # initial values can also be set for lists - # - room1 - # - room2 - # - room3 - # - # Pod template configuration - # {{< k8s-api-version href="#podtemplate-v1-core" >}} - template: - # pod metadata. Name & Namespace is overwritten - metadata: - labels: - myspeciallabel: myspecialvalue - # Pod Specification - spec: - containers: - - name: simple-game-server - image: {{< example-image >}} - imagePullPolicy: Always - # nodeSelector is a label that can be used to tell Kubernetes which host - # OS to use. For Windows game servers uncomment the nodeSelector - # definition below. - # Details: https://kubernetes.io/docs/setup/production-environment/windows/user-guide-windows-containers/#ensuring-os-specific-workloads-land-on-the-appropriate-container-host - # nodeSelector: - # kubernetes.io/os: windows -``` -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} ```yaml apiVersion: "agones.dev/v1" kind: GameServer @@ -228,7 +119,6 @@ spec: # nodeSelector: # kubernetes.io/os: windows ``` -{{% /feature %}} Since Agones defines a new [Custom Resources Definition (CRD)](https://kubernetes.io/docs/concepts/api-extension/custom-resources/) we can define a new resource using the kind `GameServer` with the custom group `agones.dev` and API version `v1`. You can use the metadata field to target a specific [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) @@ -236,37 +126,6 @@ but also attach specific [annotations](https://kubernetes.io/docs/concepts/overv The length of the `name` field of the Gameserver should not exceed 63 characters. -{{% feature expiryVersion="1.41.0" %}} -The `spec` field is the actual GameServer specification and it is composed as follow: - -- `container` is the name of container running the GameServer in case you have more than one container defined in the [pod](https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/). If you do, this is a mandatory field. For instance this is useful if you want to run a sidecar to ship logs. -- `ports` are an array of ports that can be exposed as direct connections to the game server container - - `name` is an optional descriptive name for a port - - `portPolicy` has three options: - - `Dynamic` (default) the system allocates a random free hostPort for the gameserver, for game clients to connect to. - - `Static`, user defines the hostPort that the game client will connect to. Then onus is on the user to ensure that the port is available. When static is the policy specified, `hostPort` is required to be populated. - - `Passthrough` dynamically sets the `containerPort` to the same value as the dynamically selected hostPort. This will mean that users will need to lookup what port to open through the server side SDK before starting communications. - - `container` (Alpha) the name of the container to open the port on. Defaults to the game server container if omitted or empty. - - `containerPort` the port that is being opened on the game server process, this is a required field for `Dynamic` and `Static` port policies, and should not be included in Passthrough configuration. - - `protocol` the protocol being used. Defaults to UDP. TCP and TCPUDP are other options. -- `health` to track the overall healthy state of the GameServer, more information available in the [health check documentation]({{< relref "../Guides/health-checking.md" >}}). -- `sdkServer` defines parameters for the game server sidecar - - `logging` field defines log level for SDK server. Defaults to "Info". It has three options: - - "Info" (default) The SDK server will output all messages except for debug messages - - "Debug" The SDK server will output all messages including debug messages - - "Error" The SDK server will only output error messages - - `grpcPort` the port that the SDK Server binds to for gRPC connections - - `httpPort` the port that the SDK Server binds to for HTTP gRPC gateway connections -- `players` (Alpha, behind "PlayerTracking" feature gate), sets this GameServer's initial player capacity -- `counters` (Alpha, requires "CountsAndLists" feature flag) are int64 counters with a default capacity of 1000 that can be incremented and decremented by set amounts. Keys must be declared at GameServer creation time. Note that setting the capacity to max(int64) may lead to issues. -- `lists` (Alpha, requires "CountsAndLists" feature flag) are lists of values stored against this GameServer that can be added and deleted from. Key must be declared at GameServer creation time. -- `template` the [pod spec template]({{% k8s-api-version href="#podtemplatespec-v1-core" %}}) to run your GameServer containers, [see](https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/#pod-templates) for more information. - -{{< alert title="Note" color="info">}} -The GameServer resource does not support updates. If you need to make regular updates to the GameServer spec, consider using a [Fleet]({{< ref "/docs/Reference/fleet.md" >}}). -{{< /alert >}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} The `spec` field is the actual GameServer specification and it is composed as follow: - `container` is the name of container running the GameServer in case you have more than one container defined in the [pod](https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/). If you do, this is a mandatory field. For instance this is useful if you want to run a sidecar to ship logs. @@ -297,7 +156,6 @@ The `spec` field is the actual GameServer specification and it is composed as fo {{< alert title="Note" color="info">}} The GameServer resource does not support updates. If you need to make regular updates to the GameServer spec, consider using a [Fleet]({{< ref "/docs/Reference/fleet.md" >}}). {{< /alert >}} -{{% /feature %}} ## Stable Network ID diff --git a/site/content/en/docs/Reference/gameserverallocation.md b/site/content/en/docs/Reference/gameserverallocation.md index 456951c6bd..d4c8c8803a 100644 --- a/site/content/en/docs/Reference/gameserverallocation.md +++ b/site/content/en/docs/Reference/gameserverallocation.md @@ -16,164 +16,6 @@ A full `GameServerAllocation` specification is available below and in the {{< ghlink href="/examples/gameserverallocation.yaml" >}}example folder{{< /ghlink >}} for reference: -{{% feature expiryVersion="1.41.0" %}} -{{< tabpane >}} - {{< tab header="selectors" lang="yaml" >}} -apiVersion: "allocation.agones.dev/v1" -kind: GameServerAllocation -spec: - # GameServer selector from which to choose GameServers from. - # Defaults to all GameServers. - # matchLabels, matchExpressions, gameServerState and player filters can be used for filtering. - # See: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more details on label selectors. - # An ordered list of GameServer label selectors. - # If the first selector is not matched, the selection attempts the second selector, and so on. - # This is useful for things like smoke testing of new game servers. - selectors: - - matchLabels: - agones.dev/fleet: green-fleet - # [Stage:Alpha] - # [FeatureFlag:PlayerAllocationFilter] - players: - minAvailable: 0 - maxAvailable: 99 - - matchLabels: - agones.dev/fleet: blue-fleet - - matchLabels: - game: my-game - matchExpressions: - - {key: tier, operator: In, values: [cache]} - # Specifies which State is the filter to be used when attempting to retrieve a GameServer - # via Allocation. Defaults to "Ready". The only other option is "Allocated", which can be used in conjunction with - # label/annotation/player selectors to retrieve an already Allocated GameServer. - gameServerState: Ready - # [Stage:Alpha] - # [FeatureFlag:CountsAndLists] - # counters: # selector for counter current values of a GameServer count - # rooms: - # minCount: 1 # minimum value. Defaults to 0. - # maxCount: 5 # maximum value. Defaults to max(int64) - # minAvailable: 1 # minimum available (current capacity - current count). Defaults to 0. - # maxAvailable: 10 # maximum available (current capacity - current count) Defaults to max(int64) - # lists: - # players: - # containsValue: "x6k8z" # only match GameServers who has this value in the list. Defaults to "", which is all. - # minAvailable: 1 # minimum available (current capacity - current count). Defaults to 0. - # maxAvailable: 10 # maximum available (current capacity - current count) Defaults to 0, which translates to max(int64) - # [Stage:Alpha] - # [FeatureFlag:PlayerAllocationFilter] - # Provides a filter on minimum and maximum values for player capacity when retrieving a GameServer - # through Allocation. Defaults to no limits. - players: - minAvailable: 0 - maxAvailable: 99 - # defines how GameServers are organised across the cluster. - # Options include: - # "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack - # resources - # "Distributed" is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire - # cluster - scheduling: Packed - # Optional custom metadata that is added to the game server at allocation - # You can use this to tell the server necessary session data - metadata: - labels: - mode: deathmatch - annotations: - map: garden22 - # [Stage: Alpha] - # [FeatureFlag:CountsAndLists] - # `Priorities` configuration alters the order in which `GameServers` are searched for matches to the configured `selectors`. - # - # Priority of sorting is in descending importance. I.e. The position 0 `priority` entry is checked first. - # - # For `Packed` strategy sorting, this priority list will be the tie-breaker within the least utilised infrastructure, to ensure optimal - # infrastructure usage while also allowing some custom prioritisation of `GameServers`. - # - # For `Distributed` strategy sorting, the entire selection of `GameServers` will be sorted by this priority list to provide the - # order that `GameServers` will be allocated by. - # Optional. - # priorities: - # - type: Counter # Whether a Counter or a List. - # key: rooms # The name of the Counter or List. - # order: Ascending # "Ascending" lists smaller available capacity first. - # [Stage: Alpha] - # [FeatureFlag:CountsAndLists] - # Counter actions to perform during allocation. Optional. - # counters: - # rooms: - # action: Increment # Either "Increment" or "Decrement" the Counter’s Count. - # amount: 1 # Amount is the amount to increment or decrement the Count. Must be a positive integer. - # capacity: 5 # Amount to update the maximum capacity of the Counter to this number. Min 0, Max int64. - # List actions to perform during allocation. Optional. - # lists: - # players: - # addValues: # appends values to a List’s Values array. Any duplicate values will be ignored - # - x7un - # - 8inz - # capacity: 40 # Updates the maximum capacity of the Counter to this number. Min 0, Max 1000. - {{< /tab >}} - {{< tab header="required & preferred (deprecated)" lang="yaml" >}} -apiVersion: "allocation.agones.dev/v1" -kind: GameServerAllocation -spec: - # Deprecated, use field selectors instead. - # GameServer selector from which to choose GameServers from. - # Defaults to all GameServers. - # matchLabels, matchExpressions, gameServerState and player filters can be used for filtering. - # See: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more details on label selectors. - # Deprecated, use field selectors instead. - required: - matchLabels: - game: my-game - matchExpressions: - - {key: tier, operator: In, values: [cache]} - # Specifies which State is the filter to be used when attempting to retrieve a GameServer - # via Allocation. Defaults to "Ready". The only other option is "Allocated", which can be used in conjunction with - # label/annotation/player selectors to retrieve an already Allocated GameServer. - gameServerState: Ready - # [Stage:Alpha] - # [FeatureFlag:PlayerAllocationFilter] - # Provides a filter on minimum and maximum values for player capacity when retrieving a GameServer - # through Allocation. Defaults to no limits. - players: - minAvailable: 0 - maxAvailable: 99 - # Deprecated, use field selectors instead. - # An ordered list of preferred GameServer label selectors - # that are optional to be fulfilled, but will be searched before the `required` selector. - # If the first selector is not matched, the selection attempts the second selector, and so on. - # If any of the preferred selectors are matched, the required selector is not considered. - # This is useful for things like smoke testing of new game servers. - # This also support matchExpressions, gameServerState and player filters. - preferred: - - matchLabels: - agones.dev/fleet: green-fleet - # [Stage:Alpha] - # [FeatureFlag:PlayerAllocationFilter] - players: - minAvailable: 0 - maxAvailable: 99 - - matchLabels: - agones.dev/fleet: blue-fleet - # defines how GameServers are organised across the cluster. - # Options include: - # "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack - # resources - # "Distributed" is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire - # cluster - scheduling: Packed - # Optional custom metadata that is added to the game server at allocation - # You can use this to tell the server necessary session data - metadata: - labels: - mode: deathmatch - annotations: - map: garden22 - {{< /tab >}} -{{< /tabpane >}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} {{< tabpane >}} {{< tab header="selectors" lang="yaml" >}} apiVersion: "allocation.agones.dev/v1" @@ -329,87 +171,7 @@ spec: map: garden22 {{< /tab >}} {{< /tabpane >}} -{{% /feature %}} - -{{% feature expiryVersion="1.41.0" %}} -The `spec` field is the actual `GameServerAllocation` specification, and it is composed as follows: - -- Deprecated, use `selectors` instead. If `selectors` is set, this field will be ignored. - `required` is a [GameServerSelector][gameserverselector] - (matchLabels. matchExpressions, gameServerState and player filters) from which to choose GameServers from. -- Deprecated, use `selectors` instead. If `selectors` is set, this field will be ignored. - `preferred` is an ordered list of preferred [GameServerSelector][gameserverselector] - that are _optional_ to be fulfilled, but will be searched before the `required` selector. - If the first selector is not matched, the selection attempts the second selector, and so on. - If any of the `preferred` selectors are matched, the `required` selector is not considered. - This is useful for things like smoke testing of new game servers. -- `selectors` is an ordered list of [GameServerSelector][gameserverselector]. - If the first selector is not matched, the selection attempts the second selector, and so on. - This is useful for things like smoke testing of new game servers. -- `matchLabels` is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". - The requirements are ANDed. Optional. -- `matchExpressions` is a list of label selector requirements. The requirements are ANDed. Optional. -- `gameServerState` GameServerState specifies which State is the filter to be used when attempting to retrieve a - GameServer via Allocation. Defaults to "Ready". The only other option is "Allocated", which can be used in - conjunction with label/annotation/player selectors to retrieve an already Allocated GameServer. -- `counters` (Alpha, "CountsAndLists" feature flag) enables filtering based on game server Counter status, such as - the minimum and maximum number of active rooms. This helps in selecting game servers based on their current activity - or capacity. Optional. -- `lists` (Alpha, "CountsAndLists" feature flag) enables filtering based on game server List status, such as allowing - for inclusion or exclusion of specific players. Optional. -- `scheduling` defines how GameServers are organised across the cluster, in this case specifically when allocating - `GameServers` for usage. - "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack - resources. "Distributed" is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire - cluster. See [Scheduling and Autoscaling]({{< ref "/docs/Advanced/scheduling-and-autoscaling.md" >}}) for more details. -- `metadata` is an optional list of custom labels and/or annotations that will be used to patch - the game server's metadata in the moment of allocation. This can be used to tell the server necessary session data -- `priorities` (Alpha, requires `CountsAndLists` feature flag) alters the priority by which game `GameServers` are allocated by available capacity. -- `counters` (Alpha, "CountsAndLists" feature flag) Counter actions to perform during allocation. -- `lists` (Alpha, "CountsAndLists" feature flag) List actions to perform during allocation. -Once created the `GameServerAllocation` will have a `status` field consisting of the following: - -- `State` is the current state of a GameServerAllocation, e.g. `Allocated`, or `UnAllocated` -- `GameServerName` is the name of the game server attached to this allocation, once the `state` is `Allocated` -- `Ports` is a list of the ports that the game server makes available. See [the GameServer Reference]({{< ref "/docs/Reference/gameserver.md" >}}) for more details. -- `Address` is the primary network address where the game server can be reached. -- `Addresses` is an array of all network addresses where the game server can be reached. It is a copy of the [`Node.Status.addresses`][addresses] field for the node the `GameServer` is scheduled on. -- `NodeName` is the name of the node that the gameserver is running on. -- `Source` is "local" unless this allocation is from a remote cluster, in which case `Source` is the endpoint of the remote agones-allocator. See [Multi-cluster Allocation]({{< ref "/docs/Advanced/multi-cluster-allocation.md" >}}) for more details. -- `Metadata` conststs of: - - `Labels` containing the labels of the game server at allocation time. - - `Annotations` containing the annotations of the underlying game server at allocation time. -- `Counters` (Alpha, "CountsAndLists" feature flag) is a map of [CounterStatus][counterstatus] of the game server at allocation time. -- `Lists` (Alpha, "CountsAndLists" feature flag) is a map of [ListStatus][liststatus] of the game server at allocation time. -{{< alert title="Info" color="info" >}} - -For performance reasons, the query cache for a `GameServerAllocation` is _eventually consistent_. - -Usually, the cache is populated practically immediately on `GameServer` change, but under high load of the Kubernetes -control plane, it may take some time for updates to `GameServer` selectable features to be populated into the cache -(although this doesn't affect the atomicity of the Allocation operation). - -While Agones will do a small series of retries when an allocatable `GameServer` is not available in its cache, -depending on your game requirements, it may be worth implementing your own more extend retry mechanism for -Allocation requests for high load scenarios. - -{{< /alert >}} - -Each `GameServerAllocation` will allocate from a single [namespace][namespace]. The namespace can be specified outside of -the spec, either with the `--namespace` flag when using the command line / `kubectl` or -[in the url]({{% ref "/docs/Guides/access-api.md#allocate-a-gameserver-from-a-fleet-named-simple-game-server-with-gameserverallocation" %}}) -when using an API call. If not specified when using the command line, the [namespace][namespace] will be automatically set to `default`. - - -[gameserverselector]: {{% ref "/docs/Reference/agones_crd_api_reference.html#allocation.agones.dev/v1.GameServerSelector" %}} -[namespace]: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces -[addresses]: https://v1-26.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#nodeaddress-v1-core -[counterstatus]: {{% ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.CounterStatus" %}} -[liststatus]: {{% ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.ListStatus" %}} -{{% /feature %}} -{{% feature publishVersion="1.41.0" %}} The `spec` field is the actual `GameServerAllocation` specification, and it is composed as follows: - Deprecated, use `selectors` instead. If `selectors` is set, this field will be ignored. @@ -486,7 +248,6 @@ when using an API call. If not specified when using the command line, the [names [addresses]: https://v1-26.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#nodeaddress-v1-core [counterstatus]: {{% ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.CounterStatus" %}} [liststatus]: {{% ref "/docs/Reference/agones_crd_api_reference.html#agones.dev/v1.ListStatus" %}} -{{% /feature %}} ## Next Steps: diff --git a/site/layouts/partials/navbar.html b/site/layouts/partials/navbar.html index ff931d9ac2..09ece559fc 100644 --- a/site/layouts/partials/navbar.html +++ b/site/layouts/partials/navbar.html @@ -27,6 +27,7 @@ {{ if (gt (len .Site.Home.Translations) 0) }}