Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Counters & Lists landing page and doc improvements #3649

Merged

Conversation

markmandel
Copy link
Member

What type of PR is this?

Uncomment only one /kind <> line, press enter to put that in a new line, and remove leading whitespace from that line:

/kind breaking
/kind bug
/kind cleanup

/kind documentation

/kind feature
/kind hotfix
/kind release

What this PR does / Why we need it:

The primary detail of this PR is to implement a Guide > Counters and Lists documentation landing page to give end users documentation on how to use all the variety of touch points of Counters and Lists.

This does sprawl out a little, as in part of this process, this also touched on:

  • Links and warnings from other pages that should link to this landing page.
  • Found a bunch of minor fixes that needed doing, with both documentation and example bugs and updates just for consistency.
  • Implemented some small changes in terminology (primarily total capacity -> available capacity), which aligns the implementations and the documentation.
  • Fixes and updates to CRD and Go data structure documentation that goes along with the above.
  • Found some example content that was missing.

Which issue(s) this PR fixes:

Work on #2716

Special notes for your reviewer:

Really cool to see this all working!

@markmandel markmandel added the kind/feature New features for Agones label Feb 14, 2024
@github-actions github-actions bot added the kind/documentation Documentation for Agones label Feb 14, 2024
Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: 5aa2276c-c19d-40d9-86ba-ef9c6e3d8d2d

To get permission to view the Cloud Build view, join the agones-discuss Google Group.

Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: c99fbdfe-dd2d-40e4-9c9a-e36c97aa54af

To get permission to view the Cloud Build view, join the agones-discuss Google Group.

@markmandel markmandel force-pushed the docs/counters-and-lists-landing branch from 24ff0fd to 607d22f Compare February 14, 2024 05:25
Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: 912d8d70-f561-42b1-aaf7-d4e0ebdec002

To get permission to view the Cloud Build view, join the agones-discuss Google Group.

@markmandel
Copy link
Member Author

Weird flake

WARNING: cluster standard-e2e-test-cluster-1-27 is not RUNNING. The kubernetes API may or may not be available. Check the cluster status for more information.
kubeconfig entry generated for standard-e2e-test-cluster-1-27.

...

Error: Kubernetes cluster unreachable: Get "https://35.196.76.147/version?timeout=32s": dial tcp 35.196.76.147:443: connect: connection refused
\
	helm upgrade --install --atomic --wait --timeout 10m --namespace=agones-system \
	--create-namespace \
	--set agones.image.tag=1.39.0-dev-607d22f,agones.image.registry="us-docker.pkg.dev/agones-images/ci" \
	--set agones.image.controller.pullPolicy="Always",agones.image.controller.pullSecret= \
	--set agones.image.extensions.pullPolicy="Always",agones.image.allocator.pullPolicy="Always" \
	--set agones.image.ping.pullPolicy="Always",agones.image.sdk.alwaysPull=true \
	--set agones.ping.http.serviceType="LoadBalancer",agones.ping.udp.serviceType="LoadBalancer" \
	--set agones.allocator.service.serviceType="LoadBalancer" \
	--set agones.controller.logLevel="debug" \
	--set agones.crds.cleanupOnDelete=true \
	--set agones.featureGates="PlayerAllocationFilter=true&PlayerTracking=true&FleetAllocationOverflow=false&CountsAndLists=true&DisableResyncOnSDKServer=true&Example=true" \
	--set agones.allocator.service.loadBalancerIP= \
	--set agones.metrics.serviceMonitor.enabled=false \
	 \
	agones /go/src/agones.dev/agones/install/helm/agones/
Error: Kubernetes cluster unreachable: Get "https://35.196.76.147/version?timeout=32s": dial tcp 35.196.76.147:443: connect: connection refused
make: *** [Makefile:428: install] Error 1

@markmandel
Copy link
Member Author

Aha, cluster is being updated.

image

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: 37e072aa-17b0-4812-87be-bbeb49ce71f4

The following development artifacts have been built, and will exist for the next 30 days:

A preview of the website (the last 30 builds are retained):

To install this version:

  • git fetch https://github.com/googleforgames/agones.git pull/3649/head:pr_3649 && git checkout pr_3649
  • helm install agones ./install/helm/agones --namespace agones-system --set agones.image.registry=us-docker.pkg.dev/agones-images/ci --set agones.image.tag=1.39.0-dev-607d22f-amd64

@markmandel
Copy link
Member Author

Oops, missed a bit on priorities on Fleet scaledown. Need to add that in.

Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@markmandel
Copy link
Member Author

Oops, missed a bit on priorities on Fleet scaledown. Need to add that in.

...and done. This should be good for a review now. Not the best example, but should get the point across.

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: 241619ef-5a9d-4e8d-99f3-e1a98bb7f9b8

The following development artifacts have been built, and will exist for the next 30 days:

A preview of the website (the last 30 builds are retained):

To install this version:

  • git fetch https://github.com/googleforgames/agones.git pull/3649/head:pr_3649 && git checkout pr_3649
  • helm install agones ./install/helm/agones --namespace agones-system --set agones.image.registry=us-docker.pkg.dev/agones-images/ci --set agones.image.tag=1.39.0-dev-a906a36-amd64

examples/gameserverallocation.yaml Show resolved Hide resolved
examples/listfleetautoscaler.yaml Outdated Show resolved Hide resolved
examples/listfleetautoscaler.yaml Outdated Show resolved Hide resolved
@@ -128,7 +128,7 @@ spec:
description: The name of the Counter or List. If not found on the GameServer, those GameServer with the key will have priority over those that do not.
order:
type: string
description: Ascending or Descending sort order. Default is "Ascending" so remove smaller total capacity first. "Descending" would remove larger total capacity first.
description: Ascending or Descending sort order. Default is "Ascending" so remove smaller available capacity first. "Descending" would remove larger available capacity first.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is total, not available.

// compareGameServerCapacity compares two game servers based on a CountsAndLists Priority. First
// compares by Capacity, and then compares by Count or length of the List Values if Capacity is equal.
// NOTE: This does NOT sort by available capacity.
// Returns -1 if gs1 < gs2; 1 if gs1 > gs2; 0 if gs1 == gs2; 0 if neither gamer server has the Priority.
// If only one game server has the Priority, prefer that server. I.e. nil < gsX when Priority
// Order is Descending (3, 2, 1, 0, nil), and nil > gsX when Order is Ascending (0, 1, 2, 3, nil).
func compareGameServerCapacity(p *agonesv1.Priority, gs1, gs2 *agonesv1.GameServer) int {

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh interesting! I didn't expect that, I just assumed they would be the same to be honest!

I do now have some vague memories of conversations on this topic -- but I can't remember the exact reason we did this.

Something to do with how the Autoscaler works out if it can scale down or not, and matching that logic here so it aligns as close as possible, if I remember correctly?

Can you remind me again of why this works this way, so I can capture it in the docs and head off any potential confusion here.

Having two different strategies for priorities in different places might be confusing (🤔 maybe), but that being said, I always expected the CUJ for this to be more on the count/list length value and capacity to be a non-factor 🤷🏻 .

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I remember talking about it too, but can't find it in chat or meeting notes.

Since the autoscaler never removes allocated game servers, what this really does is sort the non-allocated game servers, and remove those in order of largest or smallest capacity (after sorting by packed strategy). Which I think we decided was more important than "available capacity" for non-allocated game servers.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I'm digging into the FleetAutoscaler, and I'm seeing that it's also working on available capacity (which makes sense to calculate the buffer).

func applyCounterOrListPolicy(c *autoscalingv1.CounterPolicy, l *autoscalingv1.ListPolicy,

As a result of writing the docs, and seeing the different approaches now side by side, I'm thinking we should file a ticket to change the sorting strategy for Fleet scale down to be based on available capacity, and implement it in a separate PR?

9.9 times out of 10, I expect it to be exactly the same as set capacity with a count/length tiebreaker (since I expect dynamic capacities in GameServers that are Ready to be minimal, and counts > 0 in a Ready GameServer to be even less of an occurrence) - but it means that the concepts and the documentation across all functionality align, and are easier to reconcile when working with it?

WDYT @igooch ? If you're happy, I'll file the ticket and make the change - looks like it should be relatively minimal.

Then we can also work out how we want to manage the switchover in docs 😄 but lemme know what you think.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fleet autoscaler buffer is calculated based on available capacity, the priorities are not.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just chatting offline - doesn't seem like a huge concern if I go do the work. So will pause on this doc, and see if it's onerous to change the ordering strategy on Fleet scaledown, and then the documentation is much easier to write.

examples/counterfleetautoscaler.yaml Outdated Show resolved Hide resolved
pkg/apis/autoscaling/v1/fleetautoscaler.go Outdated Show resolved Hide resolved
pkg/fleetautoscalers/fleetautoscalers.go Outdated Show resolved Hide resolved
# key: player # The name of the Counter. No impact if no GameServer found.
# order: Descending # Default is "Ascending" so smaller capacity will be removed first on down scaling.
# 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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for all fleet autoscaler.

Suggested change
# order: Descending # Default is "Ascending" so smaller available capacity will be removed first on down scaling.
# order: Descending # Default is "Ascending" so smaller total capacity will be removed first on down scaling.

site/content/en/docs/Reference/fleetautoscaler.md Outdated Show resolved Hide resolved
@@ -845,7 +845,7 @@ func TestCounterAutoscaler(t *testing.T) {
fap.Counter = &autoscalingv1.CounterPolicy{
Key: "players",
BufferSize: intstr.FromInt(5), // Buffer refers to the available capacity (AggregateCapacity - AggregateCount)
MinCapacity: 10, // Min and MaxCapacity refer to the total capacity aggregated across the fleet, NOT the available capacity
MinCapacity: 10, // Min and MaxCapacity refer to the available capacity aggregated across the fleet, NOT the available capacity
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
MinCapacity: 10, // Min and MaxCapacity refer to the available capacity aggregated across the fleet, NOT the available capacity
MinCapacity: 10, // Min and MaxCapacity refer to the total capacity aggregated across the fleet, NOT the available capacity

examples/counterfleetautoscaler.yaml Outdated Show resolved Hide resolved
examples/gameserverallocation.yaml Show resolved Hide resolved
Comment on lines +289 to +303
While neither `players` or `rooms` are particularly good examples for this functionality, if we wanted to ensure
that `Ready` `GameServers` with the most available capacity `rooms` where a factor when scaling down a `Fleet` we could
implement the following:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@igooch this would be incorrect then? (Given some comment above?)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah missed this. Yep, it refers to total capacity, not available.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a warning here about the documentation being incorrect for now, but will be accurate soon.

PTAL- but I think that's the last outstanding item for this PR? Would love to have this live for GDC 😃

pkg/apis/autoscaling/v1/fleetautoscaler.go Outdated Show resolved Hide resolved
pkg/fleetautoscalers/fleetautoscalers.go Outdated Show resolved Hide resolved
@@ -128,7 +128,7 @@ spec:
description: The name of the Counter or List. If not found on the GameServer, those GameServer with the key will have priority over those that do not.
order:
type: string
description: Ascending or Descending sort order. Default is "Ascending" so remove smaller total capacity first. "Descending" would remove larger total capacity first.
description: Ascending or Descending sort order. Default is "Ascending" so remove smaller available capacity first. "Descending" would remove larger available capacity first.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh interesting! I didn't expect that, I just assumed they would be the same to be honest!

I do now have some vague memories of conversations on this topic -- but I can't remember the exact reason we did this.

Something to do with how the Autoscaler works out if it can scale down or not, and matching that logic here so it aligns as close as possible, if I remember correctly?

Can you remind me again of why this works this way, so I can capture it in the docs and head off any potential confusion here.

Having two different strategies for priorities in different places might be confusing (🤔 maybe), but that being said, I always expected the CUJ for this to be more on the count/list length value and capacity to be a non-factor 🤷🏻 .

Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@markmandel
Copy link
Member Author

@igooch thanks for the feedback. I'll update the Fleet > Priority docs once we hash out why we made that decision again -- my memory is not helping me here, so going through it again will help me structure the docs appropriately for that information.

@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: 12a2b925-fe42-4e8f-809c-e5716f699273

To get permission to view the Cloud Build view, join the agones-discuss Google Group.

@markmandel markmandel force-pushed the docs/counters-and-lists-landing branch from 487f7c1 to c35bbf1 Compare February 20, 2024 04:24
Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: 3d8a2ad2-bc7e-4c87-8c3a-397f9c6bac0f

The following development artifacts have been built, and will exist for the next 30 days:

A preview of the website (the last 30 builds are retained):

To install this version:

  • git fetch https://github.com/googleforgames/agones.git pull/3649/head:pr_3649 && git checkout pr_3649
  • helm install agones ./install/helm/agones --namespace agones-system --set agones.image.registry=us-docker.pkg.dev/agones-images/ci --set agones.image.tag=1.39.0-dev-c35bbf1-amd64

examples/gameserverallocation.yaml Show resolved Hide resolved
@@ -128,7 +128,7 @@ spec:
description: The name of the Counter or List. If not found on the GameServer, those GameServer with the key will have priority over those that do not.
order:
type: string
description: Ascending or Descending sort order. Default is "Ascending" so remove smaller total capacity first. "Descending" would remove larger total capacity first.
description: Ascending or Descending sort order. Default is "Ascending" so remove smaller available capacity first. "Descending" would remove larger available capacity first.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fleet autoscaler buffer is calculated based on available capacity, the priorities are not.

# key: room # The name of the List. No impact if no GameServer found.
# order: Ascending # Default is "Ascending" so smaller capacity will be removed first on down scaling.
# 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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# order: Ascending # Default is "Ascending" so smaller available capacity will be removed first on down scaling.
# order: Ascending # Default is "Ascending" so smaller total capacity will be removed first on down scaling.

- `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 Capacity is preferred. “Ascending” would be smaller Capacity is preferred.
- `order`: Order: Sort by “Ascending” or “Descending”. “Descending” a bigger available capacity is preferred. “Ascending” would be smaller available capacity is preferred.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

``

Suggested change
- `order`: Order: Sort by “Ascending” or “Descending”. “Descending” a bigger available capacity is preferred. “Ascending” would be smaller available capacity is preferred.
- `order`: Order: Sort by “Ascending” or “Descending”. “Descending” a bigger capacity is preferred. “Ascending” would be smaller capacity is preferred.

markmandel added a commit to markmandel/agones that referenced this pull request Mar 9, 2024
Doing work on googleforgames#3649, realised the `priorities` sorting implementation
between a `GameServerAllocation` and `Fleet/GameServerSet` was
different.

Once used available capacity, and the latter used current capacity.

To make things simpler, both from an implementation point of view, and
documentation and user understanding, this PR consolidates everything
into using _available capacity_ across the board.

This also includes:
* Some refactoring to consolidate Counter and List priority sorting
logic as much as possible.
* Fixes a bug in `Packed` GameServerSet scale down logic.
* Fixes for tests since logic changed.

Additional context: googleforgames#3649 (comment)
@markmandel
Copy link
Member Author

markmandel commented Mar 11, 2024

Once #3690 is merged, I'll return to this. If #3690 is merged before next Tuesday's release, this likely can be merged as is after the release is done. If not, I'll add the warning boxes for the current version.

Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: ac01e9a0-b647-4b24-b146-e9b81f1ae052

The following development artifacts have been built, and will exist for the next 30 days:

A preview of the website (the last 30 builds are retained):

To install this version:

  • git fetch https://github.com/googleforgames/agones.git pull/3649/head:pr_3649 && git checkout pr_3649
  • helm install agones ./install/helm/agones --namespace agones-system --set agones.image.registry=us-docker.pkg.dev/agones-images/ci --set agones.image.tag=1.40.0-dev-05af2de-amd64

igooch added a commit that referenced this pull request Mar 19, 2024
Doing work on #3649, realised the `priorities` sorting implementation
between a `GameServerAllocation` and `Fleet/GameServerSet` was
different.

Once used available capacity, and the latter used current capacity.

To make things simpler, both from an implementation point of view, and
documentation and user understanding, this PR consolidates everything
into using _available capacity_ across the board.

This also includes:
* Some refactoring to consolidate Counter and List priority sorting
logic as much as possible.
* Fixes a bug in `Packed` GameServerSet scale down logic.
* Fixes for tests since logic changed.

Additional context: #3649 (comment)

Co-authored-by: igooch <igooch@google.com>
Copy link
Collaborator

@igooch igooch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comments resolved with #3690

@markmandel markmandel enabled auto-merge (squash) March 28, 2024 00:01
The primary detail of this PR is to implement a Guide > Counters and
Lists documentation landing page to give end users documentation on how
to use all the variety of touch points of Counters and Lists.

This does sprawl out a little, as in part of this process, this also
touched on:
* Links and warnings from other pages that should link to this landing
page.
* Found a bunch of minor fixes that needed doing, with both
documentation and example bugs and updates just for consistency.
* Implemented some small changes in terminology (primarily total
capacity -> available capacity), which aligns the implementations and
the documentation.
* Fixes and updates to CRD and Go data structure documentation that
goes along with the above.
* Found some example content that was missing.

Work on googleforgames#2716
@markmandel markmandel force-pushed the docs/counters-and-lists-landing branch from 05af2de to a33e712 Compare March 28, 2024 00:13
Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: f0027823-ac7d-40df-9ed5-96a108b1df19

The following development artifacts have been built, and will exist for the next 30 days:

A preview of the website (the last 30 builds are retained):

To install this version:

  • git fetch https://github.com/googleforgames/agones.git pull/3649/head:pr_3649 && git checkout pr_3649
  • helm install agones ./install/helm/agones --namespace agones-system --set agones.image.registry=us-docker.pkg.dev/agones-images/ci --set agones.image.tag=1.40.0-dev-a33e712-amd64

@markmandel markmandel merged commit e696b03 into googleforgames:main Mar 28, 2024
4 checks passed
@markmandel markmandel deleted the docs/counters-and-lists-landing branch March 28, 2024 01:28
spiceratops added a commit to spiceratops/k8s-gitops that referenced this pull request May 13, 2024
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [agones](https://agones.dev)
([source](https://github.com/googleforgames/agones)) | minor |
`1.39.0` -> `1.40.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>googleforgames/agones (agones)</summary>

###
[`v1.40.0`](https://github.com/googleforgames/agones/blob/HEAD/CHANGELOG.md#v1400-2024-04-23)

[Compare
Source](https://github.com/googleforgames/agones/compare/v1.39.0...v1.40.0)

[Full
Changelog](https://github.com/googleforgames/agones/compare/v1.39.0...v1.40.0)

**Breaking changes:**

- Counters and Lists: Remove Bool Returns by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3738

**Implemented enhancements:**

- Leader Election in Custom Controller by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3696
- Migrating from generate-groups.sh to kube_codegen.sh by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3722
- Move GKEAutopilotExtendedDurationPods to Alpha in 1.28+ by
[@&#8203;zmerlynn](https://github.com/zmerlynn) in
[googleforgames/agones#3729
- Move DisableResyncOnSDKServer to Beta by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3732
- Counters & Lists landing page and doc improvements by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3649
- Graduate FleetAllocationOverflow to Stable by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3733
- Adds Counters and Lists to CSharp SDK by
[@&#8203;igooch](https://github.com/igooch) in
[googleforgames/agones#3581
- Feat/counter and list defaulting order to ascending by
[@&#8203;lacroixthomas](https://github.com/lacroixthomas) in
[googleforgames/agones#3734
- Add handling for StatusAddresses in GameServerStatus for the Unity SDK
by [@&#8203;charlesvien](https://github.com/charlesvien) in
[googleforgames/agones#3739
- Feat(gameservers): Shared pod IPs with GameServer Addresses by
[@&#8203;lacroixthomas](https://github.com/lacroixthomas) in
[googleforgames/agones#3764
- Be prescriptive about rotating regions when updating Kubernetes
versions by [@&#8203;zmerlynn](https://github.com/zmerlynn) in
[googleforgames/agones#3716
- Fix ensure-e2e-infra-state-bucket by
[@&#8203;zmerlynn](https://github.com/zmerlynn) in
[googleforgames/agones#3719
- Create Performance Cluster 1.28 by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3720
- Optimise GameServer Sub-Controller Queues by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3781

**Fixed bugs:**

- Counters & Lists: Consolidate `priorities` sorting by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3690
- Fix(Counter & Lists): Add validation for `priorities` by
[@&#8203;lacroixthomas](https://github.com/lacroixthomas) in
[googleforgames/agones#3714
- fix:
[#&#8203;3607](https://github.com/googleforgames/agones/issues/3607)
Metrics data loss in K8S controller by
[@&#8203;alvin-7](https://github.com/alvin-7) in
[googleforgames/agones#3692
- Deflake GameServerAllocationDuringMultipleAllocationClients by
allowing errors by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3750

**Security fixes:**

- Bump protobufjs from 7.2.4 to 7.2.6 in /sdks/nodejs by
[@&#8203;dependabot](https://github.com/dependabot) in
[googleforgames/agones#3755
- Bump golang.org/x/net from 0.19.0 to 0.23.0 by
[@&#8203;zmerlynn](https://github.com/zmerlynn) in
[googleforgames/agones#3793

**Other:**

- Flaky: TestGameServerCreationAfterDeletingOneExtensionsPod by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3699
- Prep for release v1.40.0 by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3700
- Bumps cpp-simple Image and Refactoring Example Makefiles by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3695
- Upgrade Protobuf to 1.33.0 by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3711
- Modify Script for Makefile Version Updates in Examples Directory by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3712
- Adds simple genai server example documentation to the Agones site by
[@&#8203;igooch](https://github.com/igooch) in
[googleforgames/agones#3713
- Update Supported Kubernetes to 1.27, 1.28, 1.29 by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3654
- fix: typo in docs by [@&#8203;qhyun2](https://github.com/qhyun2) in
[googleforgames/agones#3723
- Tweak: Setting up the Game Server by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3717
- Docs: gke.md - spelling by
[@&#8203;daniellee](https://github.com/daniellee) in
[googleforgames/agones#3740
- Aesthetic rearrangement of cloudbuild.yaml by
[@&#8203;zmerlynn](https://github.com/zmerlynn) in
[googleforgames/agones#3741
- Docs: Make hitting <enter> on connection explicit by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3743
- CI: Don't check Unreal Link by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3745
- New recommendation for multi-cluster allocation by
[@&#8203;markmandel](https://github.com/markmandel) in
[googleforgames/agones#3744
- Custom Controller Example Page on Agones Website by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3725
- Add Nitrado logo by [@&#8203;towolf](https://github.com/towolf) in
[googleforgames/agones#3753
- Remove unnecessary args from e2e-test-cloudbuild by
[@&#8203;zmerlynn](https://github.com/zmerlynn) in
[googleforgames/agones#3754
- Update Allocation from Fleet Documentation by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3761
- Transform Lint Warnings into Errors by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3756
- Update Canary Testing Documentation by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3760
- Supertuxkart Example on Agones Site by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3728
- Xonotic Example on Agones Site by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3742
- nit documentation fix in kind cluster section when building Agones by
[@&#8203;vicentefb](https://github.com/vicentefb) in
[googleforgames/agones#3770
- Merged steps inside documentation about webhook certificate creation
by [@&#8203;vicentefb](https://github.com/vicentefb) in
[googleforgames/agones#3768
- Example Images: Increment Tags by
[@&#8203;Kalaiselvi84](https://github.com/Kalaiselvi84) in
[googleforgames/agones#3796
- Update simple game server example documentation by
[@&#8203;vicentefb](https://github.com/vicentefb) in
[googleforgames/agones#3776

**New Contributors:**

- [@&#8203;lacroixthomas](https://github.com/lacroixthomas) made their
first contribution in
[googleforgames/agones#3714
- [@&#8203;daniellee](https://github.com/daniellee) made their first
contribution in
[googleforgames/agones#3740
- [@&#8203;charlesvien](https://github.com/charlesvien) made their
first contribution in
[googleforgames/agones#3739
- [@&#8203;vicentefb](https://github.com/vicentefb) made their first
contribution in
[googleforgames/agones#3770

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTYuMSIsInVwZGF0ZWRJblZlciI6IjM3LjM1Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9oZWxtIiwidHlwZS9taW5vciJdfQ==-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/documentation Documentation for Agones kind/feature New features for Agones size/XL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants