From e804614a2a2db7126c19bf6b1cfa85998e563a03 Mon Sep 17 00:00:00 2001 From: Kalaiselvim <117940852+Kalaiselvi84@users.noreply.github.com> Date: Tue, 19 Dec 2023 22:42:00 +0000 Subject: [PATCH] Release v1.37.0 (#3557) * Release v1.37.0 --- CHANGELOG.md | 62 ++++++++ install/helm/agones/Chart.yaml | 4 +- install/helm/agones/values.yaml | 2 +- install/yaml/install.yaml | 72 ++++----- 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.36.0.md | 6 +- site/content/en/blog/releases/1.37.0.md | 77 +++++++++ .../docs/Advanced/high-availability-agones.md | 19 --- site/content/en/docs/Guides/feature-stages.md | 13 -- site/content/en/docs/Guides/fleet-updates.md | 5 - site/content/en/docs/Guides/metrics.md | 9 -- .../docs/Installation/Creating Cluster/gke.md | 7 - .../docs/Installation/Install Agones/helm.md | 96 ----------- site/content/en/docs/Installation/_index.md | 3 +- site/content/en/docs/Reference/fleet.md | 111 +------------ .../en/docs/Reference/fleetautoscaler.md | 37 ----- site/content/en/docs/Reference/gameserver.md | 128 --------------- .../en/docs/Reference/gameserverallocation.md | 150 ------------------ site/layouts/partials/navbar.html | 2 +- 25 files changed, 194 insertions(+), 627 deletions(-) create mode 100644 site/content/en/blog/releases/1.37.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index ad0857fa3a..e62773d2a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,67 @@ # Changelog +## [v1.37.0](https://github.com/googleforgames/agones/tree/v1.37.0) (2023-12-19) + +[Full Changelog](https://github.com/googleforgames/agones/compare/v1.36.0...v1.37.0) + +**Implemented enhancements:** +- Adds Counter conformance test by @igooch in https://github.com/googleforgames/agones/pull/3488 +- Adds List SDK methods to simple-game-server by @igooch in https://github.com/googleforgames/agones/pull/3500 +- Support appProtocol by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3502 +- Adds gameserver e2e test for Lists by @igooch in https://github.com/googleforgames/agones/pull/3507 +- Adds fleet e2e test for lists by @igooch in https://github.com/googleforgames/agones/pull/3510 +- Disable resync on SDK Server by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3508 +- Move PodHostName to Stable by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3517 +- Adds gameserverallocation e2e tests for Lists by @igooch in https://github.com/googleforgames/agones/pull/3516 +- Move FleetAllocationOverflow to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3515 +- Move ResetMetricsOnDelete to Stable by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3518 +- Adds fleetauotscaler e2e test for Lists by @igooch in https://github.com/googleforgames/agones/pull/3519 +- Another List fleet autoscaler e2e test by @igooch in https://github.com/googleforgames/agones/pull/3521 +- Adds Go Conformance Tests for Lists by @igooch in https://github.com/googleforgames/agones/pull/3524 +- Move CountsAndLists to Alpha by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3527 +- Move SplitControllerAndExtensions to Stable by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3523 +- Add clusterIP for agones-allocator in helm chart by @govargo in https://github.com/googleforgames/agones/pull/3526 +- GKE Autopilot: Add support for Extended Duration pods by @zmerlynn in https://github.com/googleforgames/agones/pull/3387 +- Counter and List Aggregate Fleet Metrics by @igooch in https://github.com/googleforgames/agones/pull/3528 +- CountsAndLists: SDK Reference by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3537 +- Adds Counters and Lists REST API Conformance Tests by @igooch in https://github.com/googleforgames/agones/pull/3546 +- CountsAndLists: Yaml Examples And References by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3552 + +**Fixed bugs:** +- Xonotic: gLibc incompatibility by @markmandel in https://github.com/googleforgames/agones/pull/3495 +- Fixes occasional data race flake with TestSDKServerAddListValue by @igooch in https://github.com/googleforgames/agones/pull/3505 +- handle static port policy by @ashutosji in https://github.com/googleforgames/agones/pull/3375 +- Prevent Redundant Windows SDK Builds by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3520 +- CloudBuild: Fix for cache image rebuild by @markmandel in https://github.com/googleforgames/agones/pull/3535 + +**Other:** +- Prep for release v1.37.0 by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3493 +- Test SuperTuxKart Image by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3496 +- Test Rust Image by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3499 +- Test cpp-simple image by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3497 +- Add steps to update performance test clusters when upgrading k8s version by @gongmax in https://github.com/googleforgames/agones/pull/3501 +- Test NodeJS image by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3498 +- Bumps simple-game-server version to 0.22 by @igooch in https://github.com/googleforgames/agones/pull/3504 +- xonotic image test by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3494 +- Bump helm install timeout to 10m by @zmerlynn in https://github.com/googleforgames/agones/pull/3506 +- Add Shulker to the Agones adopters list by @jeremylvln in https://github.com/googleforgames/agones/pull/3503 +- Remove warning on C# SDK Docs by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3525 +- Ensure ci/save_cache and ci/restore_cache images don't get deleted by cleanup policy by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3522 +- GH Action: Size label for PRs by @markmandel in https://github.com/googleforgames/agones/pull/3532 +- Flake: TestControllerWatchGameServers by @markmandel in https://github.com/googleforgames/agones/pull/3534 +- Go CRD Comment Updates for Counters and Lists by @markmandel in https://github.com/googleforgames/agones/pull/3536 +- Simple Game Server Example: Upgrade Docker to 24.0.6 by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3531 +- CI: Fix 404 on CI link testing by @markmandel in https://github.com/googleforgames/agones/pull/3542 +- Xonotic Example: Docker 24.0.6 by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3538 +- Bumps simple-game-server to 0.23 by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3543 +- Tweaks to Client SDK reference by @markmandel in https://github.com/googleforgames/agones/pull/3541 +- Updates to Counter and List Alpha.proto Methods by @igooch in https://github.com/googleforgames/agones/pull/3544 +- Docs: SDK implementation matrixes by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3545 +- Disable deletion protection for Autopilot test clusters by @gongmax in https://github.com/googleforgames/agones/pull/3468 + +**New Contributors:** +- @jeremylvln made their first contribution in https://github.com/googleforgames/agones/pull/3503 + ## [v1.36.0](https://github.com/googleforgames/agones/tree/v1.36.0) (2023-11-07) [Full Changelog](https://github.com/googleforgames/agones/compare/v1.35.0...v1.36.0) diff --git a/install/helm/agones/Chart.yaml b/install/helm/agones/Chart.yaml index a44bd8ffa8..1c8afd783a 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.37.0-dev" -version: 1.37.0-dev +appVersion: "1.37.0" +version: 1.37.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 95879ad97d..4c63e1f20f 100644 --- a/install/helm/agones/values.yaml +++ b/install/helm/agones/values.yaml @@ -250,7 +250,7 @@ agones: allocationBatchWaitTime: 500ms image: registry: us-docker.pkg.dev/agones-images/release - tag: 1.37.0-dev + tag: 1.37.0 controller: name: agones-controller pullPolicy: IfNotPresent diff --git a/install/yaml/install.yaml b/install/yaml/install.yaml index 14b3656c0d..dac9b7328f 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.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm --- @@ -75,7 +75,7 @@ metadata: namespace: agones-system labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm --- @@ -100,7 +100,7 @@ metadata: namespace: default labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm --- @@ -112,7 +112,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.37.0-dev" + chart: "agones-1.37.0" release: "agones-manual" heritage: "Helm" type: Opaque @@ -129,7 +129,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.37.0-dev" + chart: "agones-1.37.0" release: "agones-manual" heritage: "Helm" data: @@ -145,7 +145,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.37.0-dev" + chart: "agones-1.37.0" release: "agones-manual" heritage: "Helm" data: @@ -161,7 +161,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.37.0-dev" + chart: "agones-1.37.0" release: "agones-manual" heritage: "Helm" data: @@ -191,7 +191,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -5626,7 +5626,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -5816,7 +5816,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -11084,7 +11084,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm name: gameserverallocationpolicies.multicluster.agones.dev @@ -11163,7 +11163,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16567,7 +16567,7 @@ metadata: name: agones-allocator labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm rules: @@ -16597,7 +16597,7 @@ metadata: name: agones-controller labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm rules: @@ -16651,7 +16651,7 @@ metadata: name: agones-sdk labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm rules: @@ -16670,7 +16670,7 @@ metadata: name: agones-allocator labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm subjects: @@ -16689,7 +16689,7 @@ metadata: name: agones-controller-access labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm subjects: @@ -16741,7 +16741,7 @@ metadata: namespace: default labels: app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm subjects: @@ -16775,7 +16775,7 @@ metadata: labels: agones.dev/role: controller app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16809,7 +16809,7 @@ metadata: labels: agones.dev/role: extensions app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16829,7 +16829,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16851,7 +16851,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16887,7 +16887,7 @@ metadata: labels: agones.dev/role: extensions app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16924,7 +16924,7 @@ metadata: labels: component: allocator app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16946,7 +16946,7 @@ metadata: labels: multicluster.agones.dev/role: allocator app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -16980,7 +16980,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -17022,7 +17022,7 @@ spec: serviceAccountName: agones-controller containers: - name: agones-controller - image: "us-docker.pkg.dev/agones-images/release/agones-controller:1.37.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-controller:1.37.0" imagePullPolicy: IfNotPresent env: # minimum port that can be exposed to GameServer traffic @@ -17032,7 +17032,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.37.0-dev" + value: "us-docker.pkg.dev/agones-images/release/agones-sdk:1.37.0" - name: ALWAYS_PULL_SIDECAR # set the sidecar imagePullPolicy to Always value: "false" - name: SIDECAR_CPU_REQUEST @@ -17138,7 +17138,7 @@ metadata: labels: component: extensions app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -17182,7 +17182,7 @@ spec: terminationGracePeriodSeconds: 27 containers: - name: agones-extensions - image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.37.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.37.0" imagePullPolicy: IfNotPresent env: - name: PROMETHEUS_EXPORTER @@ -17284,7 +17284,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -17319,7 +17319,7 @@ spec: priorityClassName: agones-system containers: - name: agones-ping - image: "us-docker.pkg.dev/agones-images/release/agones-ping:1.37.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-ping:1.37.0" imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -17393,7 +17393,7 @@ spec: secretName: allocator-client-ca containers: - name: agones-allocator - image: "us-docker.pkg.dev/agones-images/release/agones-allocator:1.37.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-allocator:1.37.0" imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -17474,7 +17474,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm spec: @@ -17525,7 +17525,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm webhooks: @@ -17577,7 +17577,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.37.0-dev + chart: agones-1.37.0 release: agones-manual heritage: Helm webhooks: diff --git a/sdks/csharp/sdk/AgonesSDK.nuspec b/sdks/csharp/sdk/AgonesSDK.nuspec index 14ee8df8a2..3b56576851 100644 --- a/sdks/csharp/sdk/AgonesSDK.nuspec +++ b/sdks/csharp/sdk/AgonesSDK.nuspec @@ -2,7 +2,7 @@ AgonesSDK - 1.37.0-dev + 1.37.0 Google LLC Google LLC false diff --git a/sdks/csharp/sdk/csharp-sdk.csproj b/sdks/csharp/sdk/csharp-sdk.csproj index b48dde90d6..97a6dbe0b2 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.37.0-dev + 1.37.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 adb62323ed..98801e9fe5 100644 --- a/sdks/nodejs/package-lock.json +++ b/sdks/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@google-cloud/agones-sdk", - "version": "1.37.0-dev", + "version": "1.37.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@google-cloud/agones-sdk", - "version": "1.37.0-dev", + "version": "1.37.0", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "1.7.3", diff --git a/sdks/nodejs/package.json b/sdks/nodejs/package.json index 2c43c691b2..679d1d7dc5 100644 --- a/sdks/nodejs/package.json +++ b/sdks/nodejs/package.json @@ -26,5 +26,5 @@ "publishConfig": { "access": "public" }, - "version": "1.37.0-dev" + "version": "1.37.0" } diff --git a/sdks/rust/Cargo.toml b/sdks/rust/Cargo.toml index 28ce11b01d..36dd313824 100644 --- a/sdks/rust/Cargo.toml +++ b/sdks/rust/Cargo.toml @@ -14,7 +14,7 @@ [package] name = "agones" -version = "1.37.0-dev" +version = "1.37.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 59c0ef4371..47fa59b4ad 100644 --- a/sdks/unity/package.json +++ b/sdks/unity/package.json @@ -1,6 +1,6 @@ { "name": "com.googleforgames.agones", - "version": "1.37.0-dev", + "version": "1.37.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 2a4a94fe27..17bb314ddb 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.36.0" +release_branch = "release-1.37.0" # the main version. Never is rc. -release_version = "1.36.0" +release_version = "1.37.0" # shown for production supported_k8s = ["1.26", "1.27", "1.28"] diff --git a/site/content/en/blog/releases/1.36.0.md b/site/content/en/blog/releases/1.36.0.md index e0fbb65680..207fde1e4d 100644 --- a/site/content/en/blog/releases/1.36.0.md +++ b/site/content/en/blog/releases/1.36.0.md @@ -14,7 +14,7 @@ In this release: - GameServers that end up in Error state now have a delay before deletion, allowing developers a chance to see why they have failed, and prevent GameServer churn from overwhelming the Kubernetes control plane. - We've upgraded to the latest v0.7.1 Docsy- let us know if you see anything broken in the docs! -Check the README for details on features, installation and usage. +Check the README for details on features, installation and usage. **Implemented enhancements:** @@ -30,7 +30,7 @@ Check the CHANGELOG for more details on changes. +See CHANGELOG for more details on changes. Images available with this release: @@ -51,7 +51,7 @@ Images available with this release: Helm chart available with this release: -- +- helm install agones agones/agones --version 1.36.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.37.0.md b/site/content/en/blog/releases/1.37.0.md new file mode 100644 index 0000000000..e91b394eb0 --- /dev/null +++ b/site/content/en/blog/releases/1.37.0.md @@ -0,0 +1,77 @@ +--- +title: "1.37.0 - Counters And Lists Alpha Release and Multiple Feature Promotions!" +linktitle: "1.37.0" +date: "2023-12-19" +--- + +This is the 1.37.0 release of Agones. + +This release sees the first milestone of a over-a-year series of work on the functionality of arbitrary Counters and Lists attached to each GameServer! + +We’ve also upgraded the following features: CountsAndLists to alpha, FleetAllocationOverflow to Beta, and PodHostName, ResetMetricsOnDelete, and SplitControllerAndExtensions to Stable - with defaults below. + +- CountsAndLists: This feature flag provides functionality for a configurable set of Counters or Lists be attached to GameServers with attached allocation and autoscaling functionality to provide a flexible implementation that can handle a wide range of use cases such as player tracking, high density game server room tracking, and could even be used for game specific game server allocation prioritization. + + Documentation is a little sparse in this release, but will grow! We’re focusing on the reference material first and will then expand into more in-depth guides and integration patterns. + + **Note**: Counters and Lists 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 ensure it will meet all your needs. + +- FleetAllocationOverflow: Labels and/or annotations to GameServers that exceed the desired number of replicas in a GameServerSet. This occurs when the allocation of GameServers surpasses the specified replica count. + +- PodHostName: Enables the assignment of the GameServer’s name as the PodHostname. + +- ResetMetricsOnDelete: This feature instructs the metrics service to unregister and then re-register the relevant metrics view to reset their state immediately whenever an Agones resource is deleted. + +- SplitControllerAndExtensions: This feature introduces an important change in Agones for high availability. It separates the system's responsibilities into two binaries: the `controller`, which now handles Kubernetes object monitoring and uses a leader election system to keep only one active controller at a time, and a new horizontally scalable `extensions` binary, focused on managing webhook endpoints. + +Check the README for details on features, installation and usage. + +**Implemented enhancements:** + +- Adds Counter conformance test by @igooch in https://github.com/googleforgames/agones/pull/3488 +- Adds List SDK methods to simple-game-server by @igooch in https://github.com/googleforgames/agones/pull/3500 +- Support appProtocol by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3502 +- Adds gameserver e2e test for Lists by @igooch in https://github.com/googleforgames/agones/pull/3507 +- Adds fleet e2e test for lists by @igooch in https://github.com/googleforgames/agones/pull/3510 +- Disable resync on SDK Server by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3508 +- Move PodHostName to Stable by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3517 +- Adds gameserverallocation e2e tests for Lists by @igooch in https://github.com/googleforgames/agones/pull/3516 +- Move FleetAllocationOverflow to Beta by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3515 +- Move ResetMetricsOnDelete to Stable by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3518 +- Adds fleetauotscaler e2e test for Lists by @igooch in https://github.com/googleforgames/agones/pull/3519 +- Another List fleet autoscaler e2e test by @igooch in https://github.com/googleforgames/agones/pull/3521 +- Adds Go Conformance Tests for Lists by @igooch in https://github.com/googleforgames/agones/pull/3524 +- Move CountsAndLists to Alpha by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3527 +- Move SplitControllerAndExtensions to Stable by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3523 +- Add clusterIP for agones-allocator in helm chart by @govargo in https://github.com/googleforgames/agones/pull/3526 +- GKE Autopilot: Add support for Extended Duration pods by @zmerlynn in https://github.com/googleforgames/agones/pull/3387 +- Counter and List Aggregate Fleet Metrics by @igooch in https://github.com/googleforgames/agones/pull/3528 +- CountsAndLists: SDK Reference by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3537 +- Adds Counters and Lists REST API Conformance Tests by @igooch in https://github.com/googleforgames/agones/pull/3546 +- CountsAndLists: Yaml Examples And References by @Kalaiselvi84 in https://github.com/googleforgames/agones/pull/3552 + +See CHANGELOG for more details on changes. + +Images available with this release: + +- [us-docker.pkg.dev/agones-images/release/agones-controller:1.37.0](https://us-docker.pkg.dev/agones-images/release/agones-controller:1.37.0) +- [us-docker.pkg.dev/agones-images/release/agones-sdk:1.37.0](https://us-docker.pkg.dev/agones-images/release/agones-sdk:1.37.0) +- [us-docker.pkg.dev/agones-images/release/agones-ping:1.37.0](https://us-docker.pkg.dev/agones-images/release/agones-ping:1.37.0) +- [us-docker.pkg.dev/agones-images/release/agones-allocator:1.37.0](https://us-docker.pkg.dev/agones-images/release/agones-allocator:1.37.0) +- [us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.6](https://us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.6) +- [us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.9](https://us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.9) +- [us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.16](https://us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.16) +- [us-docker.pkg.dev/agones-images/examples/crd-client:0.12](https://us-docker.pkg.dev/agones-images/examples/crd-client:0.12) +- [us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.9](https://us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.9) +- [us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.12](https://us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.12) +- [us-docker.pkg.dev/agones-images/examples/simple-game-server:0.23](https://us-docker.pkg.dev/agones-images/examples/simple-game-server:0.23) +- [us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.10](https://us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.10) +- [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.6](https://us-docker.pkg.dev/agones-images/examples/xonotic-example:1.6) + +Helm chart available with this release: + +- + helm install agones agones/agones --version 1.37.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/Advanced/high-availability-agones.md b/site/content/en/docs/Advanced/high-availability-agones.md index a04ef87c91..158ab9b99b 100644 --- a/site/content/en/docs/Advanced/high-availability-agones.md +++ b/site/content/en/docs/Advanced/high-availability-agones.md @@ -7,25 +7,13 @@ description: > publishDate: 2023-02-28 --- -{{% feature expiryVersion="1.37.0" %}} -{{< beta title="split controller and extensions" gate="SplitControllerAndExtensions" >}} -{{% /feature %}} ## High Availability for Agones Controller -{{% feature expiryVersion="1.37.0" %}} -When `SplitControllerAndExtensions` is enabled, the `agones-controller` responsibility is split up into `agones-controller`, which enacts the Agones control loop, and `agones-extensions`, which acts as a service endpoint for webhooks and the allocation extension API. Splitting these responsibilities allows the `agones-extensions` pod to be **horizontally scaled**, making the Agones control plane **highly available** and more **resiliant to disruption**. -`SplitControllerAndExtensions` enables multiple `agones-controller` pods, with a primary controller selected via leader election. Having multiple `agones-controller` minimizes downtime of the service from pod disruptions such as deployment updates, autoscaler evictions, and crashes. - -`SplitControllerAndExtensions` must be enabled for GKE Autopilot. -{{% /feature %}} - -{{% feature publishVersion="1.37.0" %}} The `agones-controller` responsibility is split up into `agones-controller`, which enacts the Agones control loop, and `agones-extensions`, which acts as a service endpoint for webhooks and the allocation extension API. Splitting these responsibilities allows the `agones-extensions` pod to be **horizontally scaled**, making the Agones control plane **highly available** and more **resiliant to disruption**. Multiple `agones-controller` pods enabled, with a primary controller selected via leader election. Having multiple `agones-controller` minimizes downtime of the service from pod disruptions such as deployment updates, autoscaler evictions, and crashes. -{{% /feature %}} ## Extension Pod Configrations @@ -44,17 +32,10 @@ An important configuration to note is the PodDisruptionBudget fields, `agones.ex ## Deployment Considerations -{{% feature expiryVersion="1.37.0" %}} -Leader election will automatically be enabled when `SplitControllerAndExtensions` is enabled and `agones.controller.replicas` is > 1. [`agones.controller.replicas`]({{< relref "/docs/Installation/Install Agones/helm.md#configuration" >}}) defaults to 2. - -When `SplitControllerAndExtensions` is enabled, what was previously a single `agones-controller` pod is deployed by default as 2 `agones-controller` and 2 `agones-extensions` pods. For example: -{{% /feature %}} -{{% feature publishVersion="1.37.0" %}} Leader election will automatically be enabled and `agones.controller.replicas` is > 1. [`agones.controller.replicas`]({{< relref "/docs/Installation/Install Agones/helm.md#configuration" >}}) defaults to 2. The default configuration now deploys 2 `agones-controller` pods and 2 `agones-extensions` pods, replacing the previous single `agones-controller` pod setup. For example: -{{% /feature %}} ``` NAME READY STATUS RESTARTS AGE diff --git a/site/content/en/docs/Guides/feature-stages.md b/site/content/en/docs/Guides/feature-stages.md index 8e551e6d35..7a99a20664 100644 --- a/site/content/en/docs/Guides/feature-stages.md +++ b/site/content/en/docs/Guides/feature-stages.md @@ -24,19 +24,7 @@ that can be found in the [Helm configuration]({{< ref "/docs/Installation/Instal The current set of `alpha` and `beta` feature gates: -{{% feature expiryVersion="1.37.0" %}} -| Feature Name | Gate | Default | Stage | Since | -|-----------------------------------------------------------------------------------------------------------------------|--------------------------------|----------|---------|--------| -| [GameServer Stable Network ID]({{% ref "/docs/Reference/gameserver.md#stable-network-id" %}}) | `PodHostname` | Enabled | `Beta` | 1.32.0 | -| [Reset Metric Export on Fleet / Autoscaler deletion]({{% relref "./metrics.md#dropping-metric-labels" %}}) | `ResetMetricsOnDelete` | Enabled | `Beta` | 1.32.0 | -| [Split `agones-controller` ](https://github.com/googleforgames/agones/issues/2797) | `SplitControllerAndExtensions` | Enabled | `Beta` | 1.32.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 | -| [Allocated GameServers are notified on relevant Fleet Updates][fleet-updates] | `FleetAllocationOverflow` | Disabled | `Alpha` | 1.32.0 | -| Example Gate (not in use) | `Example` | Disabled | None | 0.13.0 | -{{% /feature %}} -{{% feature publishVersion="1.37.0" %}} | Feature Name | Gate | Default | Stage | Since | |-----------------------------------------------------------------------------------------------------------------------|--------------------------------|----------|---------|--------| | [Allocated GameServers are notified on relevant Fleet Updates][fleet-updates] | `FleetAllocationOverflow` | Enabled | `Beta` | 1.37.0 | @@ -45,7 +33,6 @@ The current set of `alpha` and `beta` feature gates: | [Player Tracking]({{< ref "/docs/Guides/player-tracking.md" >}}) | `PlayerTracking` | Disabled | `Alpha` | 1.6.0 | | [DisableResyncOnSDKServer](https://github.com/googleforgames/agones/issues/3377) | `DisableResyncOnSDKServer` | Disabled | `Alpha` | 1.37.0 | | Example Gate (not in use) | `Example` | Disabled | None | 0.13.0 | -{{% /feature %}} [fleet-updates]: {{% relref "./fleet-updates.md#notifying-gameservers-on-fleet-updatedownscale" %}} diff --git a/site/content/en/docs/Guides/fleet-updates.md b/site/content/en/docs/Guides/fleet-updates.md index 9b7c04ae1f..c4a8ae652e 100644 --- a/site/content/en/docs/Guides/fleet-updates.md +++ b/site/content/en/docs/Guides/fleet-updates.md @@ -127,13 +127,8 @@ the rate that you deem fit for your specific rollout. ## Notifying GameServers on Fleet Update/Downscale -{{% feature expiryVersion="1.37.0" %}} -{{< alpha title="Allocated GameSever Overflow Notification" gate="FleetAllocationOverflow" >}} -{{% /feature %}} -{{% feature publishVersion="1.37.0" %}} {{< beta title="Allocated GameSever Overflow Notification" gate="FleetAllocationOverflow" >}} -{{% /feature %}} When `Allocated` `GameServers` are utilised for a long time, such as a Lobby `GameServer`, or a `GameServer` that is being reused multiple times in a row, it can be useful diff --git a/site/content/en/docs/Guides/metrics.md b/site/content/en/docs/Guides/metrics.md index 8bfb09c088..0cee0350e9 100644 --- a/site/content/en/docs/Guides/metrics.md +++ b/site/content/en/docs/Guides/metrics.md @@ -77,19 +77,10 @@ Follow the [Google Cloud Monitoring installation steps](#google-cloud-monitoring ### Dropping Metric Labels -{{% feature expiryVersion="1.37.0" %}} -{{% beta title="Reset Metric Export on Fleet / Autoscaler deletion" gate="ResetMetricsOnDelete" %}} When a Fleet or FleetAutoscaler is deleted from the system, Agones will automatically clear metrics that utilise their name as a label from the exported metrics, so the metrics exported do not continuously grow in size over the lifecycle of the Agones installation. -{{% /feature %}} - -{{% feature publishVersion="1.37.0" %}} -When a Fleet or FleetAutoscaler is deleted from the system, Agones will automatically clear metrics that utilise -their name as a label from the exported metrics, so the metrics exported do not continuously grow in size over the -lifecycle of the Agones installation. -{{% /feature %}} ## Dashboard diff --git a/site/content/en/docs/Installation/Creating Cluster/gke.md b/site/content/en/docs/Installation/Creating Cluster/gke.md index 6715ef32b0..05b266b68c 100644 --- a/site/content/en/docs/Installation/Creating Cluster/gke.md +++ b/site/content/en/docs/Installation/Creating Cluster/gke.md @@ -319,13 +319,6 @@ Flag explanations: * `--release-channel`: The release channel [you chose above](#choosing-a-release-channel-and-optional-version). * `--autoprovisioning-network-tags`: Defines the tags that will be attached to new nodes in the cluster. This is to grant access through ports via the [firewall created above](#creating-the-firewall). -{{% feature expiryVersion="1.37.0" %}} -{{}} -To install Agones on version 1.30-1.31, you must enable the `SplitControllerAndExtensions` -[feature gate]({{% ref "/docs/Guides/feature-stages.md#feature-gates" %}}). -This feature is enabled by default starting in Agones 1.32.0. -{{}} -{{% /feature %}} ## Setting up cluster credentials diff --git a/site/content/en/docs/Installation/Install Agones/helm.md b/site/content/en/docs/Installation/Install Agones/helm.md index 1a06a469b5..2633e1971d 100644 --- a/site/content/en/docs/Installation/Install Agones/helm.md +++ b/site/content/en/docs/Installation/Install Agones/helm.md @@ -147,45 +147,7 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.image.extensions.name` | Image name for extensions | `agones-extensions` | | `agones.image.extensions.pullPolicy` | Image pull policy for extensions | `IfNotPresent` | -{{% feature expiryVersion="1.37.0" %}} -### Agones Controller -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `agones.controller.replicas` | The number of replicas to run in the `agones-controller` deployment. (Ignored unless [SplitControllerAndExtensions][split-controller] is enabled) | `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` (Ignored unless [SplitControllerAndExtensions][split-controller] is enabled) | `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` (Ignored unless [SplitControllerAndExtensions][split-controller] is enabled) | \`\` | -| `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` | -{{% /feature %}} - -{{% feature publishVersion="1.37.0" %}} ### Agones Controller | Parameter | Description | Default | @@ -221,7 +183,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `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` | -{{% /feature %}} ### Ping Service @@ -259,7 +220,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.ping.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.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` | \`\` | -{{% feature publishVersion="1.37.0" %}} ### Allocator Service @@ -316,63 +276,7 @@ The following tables lists the configurable parameters of the Agones chart and t | `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` | \`\` | -{{% /feature %}} -{{% feature expiryVersion="1.37.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.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.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.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.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.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` | \`\` | -{{% /feature %}} ### Extensions diff --git a/site/content/en/docs/Installation/_index.md b/site/content/en/docs/Installation/_index.md index 81ae5937c3..246c5d88c3 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.36 | {{% k8s-version %}} | +| 1.37 | {{% k8s-version %}} | +| 1.36 | 1.26, 1.27, 1.28 | | 1.35 | 1.25, 1.26, 1.27 | | 1.34 | 1.25, 1.26, 1.27 | | 1.33 | 1.25, 1.26, 1.27 | diff --git a/site/content/en/docs/Reference/fleet.md b/site/content/en/docs/Reference/fleet.md index a9bc2d7b61..87c0cd9601 100644 --- a/site/content/en/docs/Reference/fleet.md +++ b/site/content/en/docs/Reference/fleet.md @@ -12,116 +12,7 @@ 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.37.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% - # [Stage:Alpha] - # [FeatureFlag:FleetAllocationOverflow] - # 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 - 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 - # The GameServer's Pod template - template: - spec: - containers: - - name: simple-game-server - image: {{< example-image >}} -``` - -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 `Fleet` 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/) but also -attach specific [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) -and [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) to your resource. -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. -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` (Alpha, 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. -- `template` a full `GameServer` configuration template. - See the [GameServer]({{< relref "gameserver.md" >}}) reference for all available fields. -{{% /feature %}} - -{{% feature publishVersion="1.37.0" %}} ```yaml apiVersion: "agones.dev/v1" kind: Fleet @@ -244,7 +135,7 @@ The `spec` field is the actual `Fleet` specification and it is composed as follo - `order`: Order: Sort by “Ascending” or “Descending”. “Descending” a bigger Capacity is preferred. “Ascending” would be smaller 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 Scale subresource is defined for a Fleet. Please refer to [Kubernetes docs](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#subresources). diff --git a/site/content/en/docs/Reference/fleetautoscaler.md b/site/content/en/docs/Reference/fleetautoscaler.md index 0a74dd1580..455d5bea66 100644 --- a/site/content/en/docs/Reference/fleetautoscaler.md +++ b/site/content/en/docs/Reference/fleetautoscaler.md @@ -79,7 +79,6 @@ spec: seconds: 30 ``` -{{% feature publishVersion="1.37.0" %}} Counter-based `FleetAutoscaler` specification below and in the {{< ghlink href="examples/counterfleetautoscaler.yaml" >}}example folder{{< /ghlink >}}: ```yaml @@ -134,48 +133,13 @@ spec: # MaxCapacity must be greater than or equal to both MinCapacity and BufferSize. Required field. maxCapacity: 100 ``` -{{% /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 `FleetAutoscaler` with the custom group `autoscaling.agones.dev` and API version `v1` -{{% feature expiryVersion="1.37.0" %}} -The `spec` field is the actual `FleetAutoscaler` specification and it is composed as follows: - -- `fleetName` is name of the fleet to attach to and control. Must be an existing `Fleet` in the same namespace - as this `FleetAutoscaler`. -- `policy` is the autoscaling policy - - `type` is type of the policy. "Buffer" and "Webhook" are available - - `buffer` parameters of the buffer policy type - - `bufferSize` is the size of a buffer of "ready" and "reserved" game server instances. - The FleetAutoscaler will scale the fleet up and down trying to maintain this buffer, - as instances are being allocated or terminated. - Note that "reserved" game servers could not be scaled down. - It can be specified either in absolute (i.e. 5) or percentage format (i.e. 5%) - - `minReplicas` is the minimum fleet size to be set by this FleetAutoscaler. - if not specified, the minimum fleet size will be bufferSize if absolute value is used. - When `bufferSize` in percentage format is used, `minReplicas` should be more than 0. - - `maxReplicas` is the maximum fleet size that can be set by this FleetAutoscaler. Required. - - `webhook` parameters of the webhook policy type - - `service` is a reference to the service for this webhook. Either `service` or `url` must be specified. If the webhook is running within the cluster, then you should use `service`. Port 8000 will be used if it is open, otherwise it is an error. - - `name` is the service name bound to Deployment of autoscaler webhook. Required {{< ghlink href="examples/autoscaler-webhook/autoscaler-service.yaml" >}}(see example){{< /ghlink >}} - The FleetAutoscaler will scale the fleet up and down based on the response from this webhook server - - `namespace` is the kubernetes namespace where webhook is deployed. Optional - If not specified, the "default" would be used - - `path` is an optional URL path which will be sent in any request to this service. (i. e. /scale) - - `port` is optional, it is the port for the service which is hosting the webhook. The default is 8000 for backward compatibility. If given, it should be a valid port number (1-65535, inclusive). - - `url` gives the location of the webhook, in standard URL form (`[scheme://]host:port/path`). Exactly one of `url` or `service` must be specified. The `host` should not refer to a service running in the cluster; use the `service` field instead. (optional, instead of service) - - `caBundle` is a PEM encoded certificate authority bundle which is used to issue and then validate the webhook's server certificate. Base64 encoded PEM string. Required only for HTTPS. If not present HTTP client would be used. - - Note: only one `buffer` or `webhook` could be defined for FleetAutoscaler which is based on the `type` field. -- `sync` is autoscaling sync strategy. It defines when to run the autoscaling - - `type` is type of the sync. For now only "FixedInterval" is available - - `fixedInterval` parameters of the fixedInterval sync - - `seconds` is the time in seconds between each auto scaling -{{% /feature %}} -{{% feature publishVersion="1.37.0" %}} The `spec` field is the actual `FleetAutoscaler` specification and it is composed as follows: - `fleetName` is name of the fleet to attach to and control. Must be an existing `Fleet` in the same namespace @@ -219,7 +183,6 @@ The `spec` field is the actual `FleetAutoscaler` specification and it is compose - `type` is type of the sync. For now only "FixedInterval" is available - `fixedInterval` parameters of the fixedInterval sync - `seconds` is the time in seconds between each auto scaling -{{% /feature %}} # Webhook Endpoint Specification Webhook endpoint is used to delegate the scaling logic to a separate pod or server. diff --git a/site/content/en/docs/Reference/gameserver.md b/site/content/en/docs/Reference/gameserver.md index 3e01e75cac..a478d3cf61 100644 --- a/site/content/en/docs/Reference/gameserver.md +++ b/site/content/en/docs/Reference/gameserver.md @@ -9,126 +9,7 @@ description: > A full GameServer specification is available below and in the {{< ghlink href="examples/gameserver.yaml" >}}example folder{{< /ghlink >}} for reference : -{{% feature expiryVersion="1.37.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 - # 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 -``` -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/) -but also attach specific [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) and [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) to your resource. This is a very common pattern in the Kubernetes ecosystem. - -The length of the `name` field of the Gameserver should not exceed 63 characters. - -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 -- `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. -{{% /feature %}} - -{{% feature publishVersion="1.37.0" %}} ```yaml apiVersion: "agones.dev/v1" kind: GameServer @@ -268,7 +149,6 @@ The `spec` field is the actual GameServer specification and it is composed as fo - `counters` (Alpha, requires "CountsAndLists" feature flag) are int64 counters that can be incremented and decremented by set amounts. Keys must be declared at GameServer creation time. - `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. -{{% /feature %}} {{< 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" >}}). @@ -276,17 +156,9 @@ The GameServer resource does not support updates. If you need to make regular up ## Stable Network ID -{{% feature expiryVersion="1.37.0" %}} -{{< beta title="Stable Network ID" gate="PodHostname" >}} - -If you want to connect to a `GameServer` from within your Kubernetes cluster via a convention based -DNS entry, each Pod attached to a `GameServer` automatically derives its hostname from the name of the `GameServer`. -{{% /feature %}} -{{% feature publishVersion="1.37.0" %}} If you want to connect to a `GameServer` from within your Kubernetes cluster via a convention based DNS entry, each Pod attached to a `GameServer` automatically derives its hostname from the name of the `GameServer`. -{{% /feature %}} To create internal DNS entries within the cluster, a group of `Pods` attached to `GameServers` can use a [Headless Service](https://kubernetes.io/docs/concepts/services-networking/service/#headless-services) to control diff --git a/site/content/en/docs/Reference/gameserverallocation.md b/site/content/en/docs/Reference/gameserverallocation.md index bf0846d76f..478012411e 100644 --- a/site/content/en/docs/Reference/gameserverallocation.md +++ b/site/content/en/docs/Reference/gameserverallocation.md @@ -10,156 +10,7 @@ weight: 30 A full `GameServerAllocation` specification is available below and in the {{< ghlink href="/examples/gameserverallocation.yaml" >}}example folder{{< /ghlink >}} for reference: -{{% feature expiryVersion="1.37.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: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 - {{< /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 >}} - -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. -- `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 - -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. -{{% /feature %}} -{{% feature publishVersion="1.37.0" %}} {{< tabpane >}} {{< tab header="selectors" lang="yaml" >}} apiVersion: "allocation.agones.dev/v1" @@ -360,7 +211,6 @@ Once created the `GameServerAllocation` will have a `status` field consisting of - `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. -{{% /feature %}} {{< alert title="Info" color="info" >}} diff --git a/site/layouts/partials/navbar.html b/site/layouts/partials/navbar.html index a24747982a..9d851c556a 100644 --- a/site/layouts/partials/navbar.html +++ b/site/layouts/partials/navbar.html @@ -27,6 +27,7 @@ {{ if (gt (len .Site.Home.Translations) 0) }}