Skip to content

Commit

Permalink
New recommendation for multi-cluster allocation (#3744)
Browse files Browse the repository at this point in the history
Offline we tend to recommend people use a Service Mesh for multi-cluster
allocation, but I keep seeing people running into our docs and trying to
implement our solution.

Rather than waiting on a full investigation and documentation, I wanted
to put a note at the top making a recommendation to go in a different
direction - so that people don't actively chase this path if they aren't
aware there are other (better) paths for multi-cluster communications.

Work on #2468

Co-authored-by: Robert Bailey <[email protected]>
  • Loading branch information
markmandel and roberthbailey authored Apr 5, 2024
1 parent b0c1b60 commit 0e6d2d8
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions site/content/en/docs/Advanced/multi-cluster-allocation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@ description: >
In order to allow allocation from multiple clusters, Agones provides a mechanism to set redirect rules for allocation requests to the right cluster.
---

{{% pageinfo color="info" %}}
This implementation of multi-cluster allocation was written before managed and open source multi-cluster Service Meshes
such as [Istio](https://istio.io/latest/docs/setup/install/multicluster/)
and [Linkerd](https://linkerd.io/2.15/features/multicluster/), were available and so widely utilised.

We now recommend implementing a Service Mesh in each of your Agones clusters and backend services cluster to provide
a multi-cluster allocation endpoint that points to each Agones cluster's
[Allocation Service]({{< relref "allocator-service.md">}}).

Service Mesh specific projects provide far more powerful features, easier configuration and maintenance, and we
expect that they will be something that you will likely be installing in your multi-cluster architecture anyway.

Further documentation on setting up Agones with a Service Mesh is incoming, but to see an example utilising
[Google Cloud Service Mesh](https://cloud.google.com/service-mesh), which is backed by Istio, see the
[Global Scale Game](https://github.com/googleforgames/global-multiplayer-demo) demo project.
{{% /pageinfo %}}

There may be different types of clusters, such as on-premise, and Google Kubernetes Engine (GKE), used by a game to help with the cost-saving and availability.
For this purpose, Agones provides a mechanism to define priorities on the clusters. Priorities are defined on {{< ghlink href="pkg/apis/multicluster/v1/gameserverallocationpolicy.go" >}}GameServerAllocationPolicy{{< /ghlink >}} agones CRD. A matchmaker can enable the multi-cluster rules on a request and target [agones-allocator]({{< relref "allocator-service.md">}}) endpoint in any of the clusters and get resources allocated on the cluster with the highest priority. If the cluster with the highest priority is overloaded, the allocation request is redirected to the cluster with the next highest priority.

Expand Down

0 comments on commit 0e6d2d8

Please sign in to comment.