Allocator Service
To allocate a game server, Agones provides a gRPC and REST service with mTLS authentication, called agones-allocator
that can be used instead of
GameServerAllocations
.
Both services are accessible through a Kubernetes service that is externalized using a load balancer and they run on the same port. For requests to succeed, a client certificate must be provided that is in the authorization list of the allocator service. The remainder of this article describes how to manually make a successful allocation request using the API.
The guide assumes you have command line tools installed for jq, go and openssl.
GameServerAllocation
vs Allocator Service
There are several reasons you may prefer to use the Allocator Service over the GameServerAllocation
custom resource
definition, depending on your architecture and requirements:
- A requirement to do multi-cluster allocation.
- Want to create Allocations from outside the Agones Kubernetes cluster.
- Prefer SSL based authentication over Kubernetes RBAC.
- Prefer a gRPC or REST based API over an integration with the Kubernetes API.
Find the external IP
The service is hosted under the same namespace as the Agones controller. To find the external IP of your allocator service, replace agones-system namespace with the namespace to which Agones is deployed and execute the following command:
kubectl get service agones-allocator -n agones-system
The output of the command should look like:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE agones-allocator LoadBalancer 10.55.251.73 34.82.195.204 443:30250/TCP 7d22h
Server TLS certificate
If the agones-allocator
service is installed as a LoadBalancer
using a reserved IP, a valid self-signed server TLS certificate is generated using the IP provided. Otherwise, the server TLS certificate should be replaced. If you installed Agones using helm, you can easily reconfigure the allocator service with a preset IP address by setting the agones.allocator.http.loadBalancerIP
parameter to the address that was automatically assigned to the service and helm upgrade
:
EXTERNAL_IP=$(kubectl get services agones-allocator -n agones-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
helm upgrade --install --wait \
--set agones.allocator.http.loadBalancerIP=${EXTERNAL_IP} \
...
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified October 11, 2021: Add some extra emphasis on the breaking change in the helm parameters (#2305) (70d56ad7)