Agones can be installed on any Kubernetes cluster version 1.27 or later. This guide covers installation methods and configuration options for different environments.
Prerequisites
Before installing Agones, ensure you have:
Kubernetes cluster running version 1.27 or later
kubectl configured with cluster access and sufficient permissions
Cluster resources : Minimum 3 nodes with 2 CPU and 4GB RAM per node
Port range : UDP/TCP ports 7000-8000 available (configurable)
Agones requires privileged access to manage game server pods and network configuration. Ensure you have cluster-admin or equivalent permissions.
Installation Methods
Choose the installation method that best fits your workflow:
Helm Recommended for most users. Provides easy configuration and upgrades.
Terraform Infrastructure as Code approach for automated deployments.
YAML Direct manifest installation for custom workflows.
Install with Helm
Helm is the recommended installation method, offering the easiest setup and configuration experience.
Add the Agones Helm repository
helm repo add agones https://agones.dev/chart/stable
helm repo update
Install Agones
Install Agones with default configuration: helm install agones agones/agones \
--namespace agones-system \
--create-namespace
This installs Agones version 1.57.0-dev from the stable repository.
Verify installation
Check that all Agones components are running: kubectl get pods -n agones-system
You should see:
agones-controller (2 replicas)
agones-extensions (2 replicas)
agones-allocator (3 replicas)
agones-ping (2 replicas)
Helm Configuration Options
Customize your installation using Helm values:
Custom port range
Disable Prometheus metrics
Custom image registry
Enable feature gates
helm install agones agones/agones \
--namespace agones-system \
--create-namespace \
--set gameservers.minPort= 10000 \
--set gameservers.maxPort= 20000
Using a values file
For complex configurations, create a values.yaml file:
agones :
image :
registry : us-docker.pkg.dev/agones-images/release
tag : 1.57.0-dev
metrics :
prometheusEnabled : true
stackdriverEnabled : false
controller :
logLevel : info
replicas : 2
resources :
requests :
cpu : 1
memory : 256Mi
allocator :
replicas : 3
service :
serviceType : LoadBalancer
gameservers :
namespaces :
- default
- game-servers
minPort : 7000
maxPort : 8000
Install with your custom values:
helm install agones agones/agones \
--namespace agones-system \
--create-namespace \
--values values.yaml
Common Helm values
Parameter Description Default agones.image.tagAgones version to install 1.57.0-devagones.controller.replicasNumber of controller replicas 2agones.allocator.replicasNumber of allocator replicas 3agones.featureGatesComma-separated feature gates ""gameservers.minPortMinimum game server port 7000gameservers.maxPortMaximum game server port 8000agones.metrics.prometheusEnabledEnable Prometheus metrics true
For a complete list of configuration options, see the Helm chart values.yaml .
Terraform modules are available for automated infrastructure provisioning.
The helm3 module installs Agones using the Terraform Helm provider:
terraform {
required_version = ">= 1.0.0"
required_providers {
helm = {
version = "~> 2.3"
source = "hashicorp/helm"
}
}
}
provider "helm" {
kubernetes {
host = var . kubernetes_host
token = var . kubernetes_token
cluster_ca_certificate = base64decode (var . cluster_ca_certificate )
}
}
module "agones" {
source = "git::https://github.com/googleforgames/agones.git//install/terraform/modules/helm3"
agones_version = "1.57.0-dev"
host = var . kubernetes_host
token = var . kubernetes_token
cluster_ca_certificate = var . cluster_ca_certificate
gameserver_minPort = 7000
gameserver_maxPort = 8000
set_values = [
{
name = "agones.controller.logLevel"
value = "info"
type = "string"
}
]
}
Apply the configuration:
terraform init
terraform plan
terraform apply
Agones provides Terraform modules for major cloud providers:
Google Cloud (GKE) Modules for both standard GKE and GKE Autopilot
AWS (EKS) EKS cluster provisioning with Agones
Azure (AKS) AKS cluster setup and Agones installation
These modules are located in install/terraform/modules/ and handle:
Kubernetes cluster creation
Network configuration
Node pool setup
Agones installation
For detailed usage, see the respective module documentation:
Install with YAML
For direct Kubernetes manifest installation:
Download the install manifest
kubectl create namespace agones-system
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.57.0/install/yaml/install.yaml
Verify installation
kubectl get pods -n agones-system
kubectl get crds | grep agones
YAML installation uses default configuration. For customization, download the manifest, modify it, and apply: curl -L https://raw.githubusercontent.com/googleforgames/agones/release-1.57.0/install/yaml/install.yaml > agones.yaml
# Edit agones.yaml as needed
kubectl apply -f agones.yaml
Post-Installation Configuration
By default, Agones watches the default namespace. To enable additional namespaces:
helm upgrade agones agones/agones \
--namespace agones-system \
--reuse-values \
--set gameservers.namespaces='{default,game-servers,production}'
Ensure your firewall allows traffic on the game server port range:
GKE
AWS (Security Group)
Azure (NSG)
gcloud compute firewall-rules create game-server-firewall \
--allow udp:7000-8000 \
--target-tags game-server \
--source-ranges 0.0.0.0/0
Enable monitoring
Agones exposes Prometheus metrics by default. To scrape metrics:
scrape_configs :
- job_name : 'agones'
kubernetes_sd_configs :
- role : pod
namespaces :
names :
- agones-system
relabel_configs :
- source_labels : [ __meta_kubernetes_pod_label_agones_dev_role ]
action : keep
regex : (controller|allocator)
Upgrading Agones
Upgrade with Helm
helm repo update
helm upgrade agones agones/agones \
--namespace agones-system \
--reuse-values
Always review the changelog before upgrading. Some versions may include breaking changes.
Update the agones_version variable and run:
terraform plan
terraform apply
Uninstalling Agones
helm uninstall agones --namespace agones-system
kubectl delete namespace agones-system
kubectl delete -f install.yaml
kubectl delete namespace agones-system
Uninstalling Agones will not automatically delete GameServer pods. Delete all GameServers and Fleets before uninstalling: kubectl delete fleets --all --all-namespaces
kubectl delete gameservers --all --all-namespaces
For detailed installation instructions on specific platforms:
Google Kubernetes Engine Install Agones on GKE or GKE Autopilot
Amazon EKS Install Agones on Amazon EKS
Azure AKS Install Agones on Azure Kubernetes Service
Local Development Install Agones on Minikube, kind, or Docker Desktop
Troubleshooting
Installation fails with RBAC errors
Ensure you have cluster-admin permissions: kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole=cluster-admin \
--user=$( gcloud config get-value account )
Pods fail to start with ImagePullBackOff
If using a private registry, configure image pull secrets: kubectl create secret docker-registry agones-pull-secret \
--docker-server=your-registry.com \
--docker-username=your-username \
--docker-password=your-password \
--namespace=agones-system
helm upgrade agones agones/agones \
--namespace agones-system \
--set agones.image.controller.pullSecret=agones-pull-secret
Agones controller cannot create GameServers
Check controller logs: kubectl logs -n agones-system -l app=agones,agones.dev/role=controller
Verify CustomResourceDefinitions are installed: kubectl get crds | grep agones.dev
If the default port range (7000-8000) conflicts with existing services, change it during installation: helm install agones agones/agones \
--namespace agones-system \
--set gameservers.minPort= 10000 \
--set gameservers.maxPort= 20000
Next Steps
Quickstart Guide Deploy your first game server
Configuration Reference Explore all configuration options