This page provides a comprehensive reference for all configuration options available when installing Agones.
Configuration Overview
Agones configuration is organized into several major sections:
System Core system settings like RBAC, CRDs, and cloud provider
Components Controller, Extensions, Allocator, and Ping service
Game Servers Port ranges, namespaces, and SDK settings
System Configuration
Global Settings
agones :
# Feature gates (comma or ampersand separated)
featureGates : "CountsAndLists=true&PortRanges=true&PlayerTracking=false"
# Cloud product detection (auto, gke, eks, aks, generic)
cloudProduct : "auto"
# Require dedicated nodes with taints
requireDedicatedNodes : false
# RBAC configuration
rbacEnabled : true
registerServiceAccounts : true
registerWebhooks : true
registerApiService : true
# Priority class
createPriorityClass : true
priorityClassName : agones-system
Custom Resource Definitions
agones :
crds :
install : true # Install CRDs during Helm install
cleanupOnDelete : true # Delete CRDs on Helm uninstall
cleanupJobTTL : 60 # TTL for cleanup job in seconds
Important: Setting cleanupOnDelete: true will delete all GameServers, Fleets, and FleetAutoscalers when uninstalling Agones. In production, consider setting this to false and managing CRDs separately.
Service Accounts
Service Account Configuration
agones :
serviceaccount :
allocator :
name : agones-allocator
annotations : {}
labels : {}
controller :
name : agones-controller
annotations : {}
sdk :
name : agones-sdk
annotations : {}
processor :
name : agones-processor
annotations : {}
labels : {}
Image Configuration
agones :
image :
# Container registry
registry : us-docker.pkg.dev/agones-images/release
# Version tag
tag : 1.57.0-dev
# Controller image
controller :
name : agones-controller
pullPolicy : IfNotPresent # Always, IfNotPresent, Never
# Extensions image
extensions :
name : agones-extensions
pullPolicy : IfNotPresent
# SDK sidecar image
sdk :
name : agones-sdk
cpuRequest : 30m # CPU request
cpuLimit : 0 # 0 = no limit
memoryRequest : 0 # 0 = no limit
memoryLimit : 0 # 0 = no limit
alwaysPull : false # Always pull SDK image
# Ping service image
ping :
name : agones-ping
pullPolicy : IfNotPresent
# Allocator image
allocator :
name : agones-allocator
pullPolicy : IfNotPresent
# Processor image
processor :
name : agones-processor
pullPolicy : IfNotPresent
Controller Configuration
agones :
controller :
# Deployment settings
replicas : 2
updateStrategy : {} # Rolling update strategy
# Logging
logLevel : info # debug, info, warn, error
persistentLogs : true
persistentLogsSizeLimitMB : 10000
# Performance tuning
numWorkers : 100 # Worker goroutines
apiServerQPS : 400 # QPS to Kubernetes API
apiServerQPSBurst : 500 # Burst QPS
maxCreationParallelism : 16 # Parallel creations
maxGameServerCreationsPerBatch : 64 # Max per batch
maxDeletionParallelism : 64 # Parallel deletions
maxGameServerDeletionsPerBatch : 64 # Max per batch
maxPodPendingCount : 5000 # Max pending pods
allocationBatchWaitTime : 500ms # Batch wait time
# Resources
resources : {}
# requests:
# cpu: 500m
# memory: 256Mi
# limits:
# cpu: 1000m
# memory: 512Mi
# Node placement
nodeSelector : {}
labels : {}
annotations : {}
tolerations :
- key : "agones.dev/agones-system"
operator : "Equal"
value : "true"
effect : "NoExecute"
topologySpreadConstraints : []
# Pod Disruption Budget
pdb :
minAvailable : 1
# Safe to evict annotation
safeToEvict : false
# TLS configuration
generateTLS : true
tlsCert : ""
tlsKey : ""
disableSecret : false
customCertSecretPath : []
# Webhooks
allocationApiService :
annotations : {}
disableCaBundle : false
validatingWebhook :
annotations : {}
disableCaBundle : false
mutatingWebhook :
annotations : {}
disableCaBundle : false
# Health checks
http :
port : 8080
healthCheck :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
timeoutSeconds : 1
Extensions Configuration
agones :
extensions :
# Deployment settings
replicas : 2
updateStrategy : {}
# Host networking (required for some CNI plugins on EKS)
hostNetwork : false
# Logging
logLevel : info
persistentLogs : true
persistentLogsSizeLimitMB : 10000
# Performance
numWorkers : 100
apiServerQPS : 400
apiServerQPSBurst : 500
allocationBatchWaitTime : 500ms
# Resources
resources : {}
# requests:
# cpu: 500m
# memory: 256Mi
# Node placement
nodeSelector : {}
annotations : {}
labels : {}
tolerations :
- key : "agones.dev/agones-system"
operator : "Equal"
value : "true"
effect : "NoExecute"
topologySpreadConstraints : []
# Pod Disruption Budget
pdb :
minAvailable : 1
# TLS configuration
generateTLS : true
tlsCert : ""
tlsKey : ""
disableSecret : false
customCertSecretPath : []
# Webhooks
allocationApiService :
annotations : {}
disableCaBundle : false
validatingWebhook :
annotations : {}
disableCaBundle : false
mutatingWebhook :
annotations : {}
disableCaBundle : false
# Ports
webhooks :
port : 8081
http :
port : 8080
# Health checks
healthCheck :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
timeoutSeconds : 1
readiness :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
Allocator Configuration
agones :
allocator :
# Installation
install : true
# Deployment
replicas : 3
updateStrategy : {}
# Logging
logLevel : info
# Performance
apiServerQPS : 400
apiServerQPSBurst : 500
allocationBatchWaitTime : 500ms
# Multi-cluster allocation timeouts
remoteAllocationTimeout : 10s
totalRemoteAllocationTimeout : 30s
# Resources
resources : {}
# requests:
# cpu: 500m
# memory: 256Mi
# Node placement
annotations : {}
tolerations :
- key : "agones.dev/agones-system"
operator : "Equal"
value : "true"
effect : "NoExecute"
topologySpreadConstraints : []
# Pod Disruption Budget
pdb :
enabled : false
minAvailable : 1
# Service configuration
service :
name : agones-allocator
serviceType : LoadBalancer # LoadBalancer, NodePort, ClusterIP
externalTrafficPolicy : Cluster
clusterIP : ""
loadBalancerIP : ""
loadBalancerSourceRanges : []
annotations : {}
ipFamilyPolicy : ""
ipFamilies : []
# HTTP endpoint
http :
enabled : true
appProtocol : ""
port : 443
portName : https
targetPort : 8443
nodePort : 0 # For NodePort service type
unallocatedStatusCode : 429 # HTTP status for no available servers
# gRPC endpoint
grpc :
enabled : true
appProtocol : ""
port : 443
portName : grpc
targetPort : 8443
nodePort : 0
# Metrics service
serviceMetrics :
name : agones-allocator-metrics-service
annotations : {}
http :
enabled : true
port : 8080
portName : http
# TLS configuration
disableSecretCreation : false
generateTLS : true
tlsCert : ""
tlsKey : ""
generateClientTLS : true
clientCAs : {} # Client CA certificates
disableMTLS : false # Disable mutual TLS
disableTLS : false # Disable TLS entirely
# Health checks
healthCheck :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
timeoutSeconds : 1
readiness :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
# Processor (allocation queue processor)
processor :
replicas : 2
maxBatchSize : 100
logLevel : info
leaderElection : {}
resources : {}
nodeSelector : {}
annotations : {}
labels : {}
tolerations :
- key : "agones.dev/agones-system"
operator : "Equal"
value : "true"
effect : "NoExecute"
affinity : {}
topologySpreadConstraints : []
http :
port : 8080
grpc :
address : agones-processor.agones-system.svc.cluster.local
port : 9090
readiness :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
healthCheck :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
timeoutSeconds : 1
Ping Service Configuration
agones :
ping :
# Installation
install : true
# Deployment
replicas : 2
updateStrategy : {}
# Resources
resources : {}
# Node placement
nodeSelector : {}
annotations : {}
tolerations :
- key : "agones.dev/agones-system"
operator : "Equal"
value : "true"
effect : "NoExecute"
topologySpreadConstraints : []
# Pod Disruption Budget
pdb :
enabled : false
minAvailable : 1
# HTTP service
http :
expose : true
response : ok # Health check response
port : 80
nodePort : 0
serviceType : LoadBalancer
loadBalancerIP : ""
externalTrafficPolicy : Cluster
loadBalancerSourceRanges : []
annotations : {}
ipFamilyPolicy : ""
ipFamilies : []
# UDP service
udp :
expose : true
rateLimit : 20 # Packets per second
port : 50000
nodePort : 0
serviceType : LoadBalancer
loadBalancerIP : ""
externalTrafficPolicy : Cluster
loadBalancerSourceRanges : []
annotations : {}
ipFamilyPolicy : ""
ipFamilies : []
# Health checks
healthCheck :
initialDelaySeconds : 3
periodSeconds : 3
failureThreshold : 3
timeoutSeconds : 1
SDK Server Configuration
agones :
sdkServer :
requestsRateLimit : 500ms # Rate limit for SDK requests
Game Server Configuration
gameservers :
# Namespaces where GameServers can be created
namespaces :
- default
# Port allocation range
minPort : 7000
maxPort : 8000
# Additional port ranges (requires PortRanges feature gate)
additionalPortRanges : {}
# game: [9000, 10000]
# voice: [20000, 21000]
# Preserve unknown fields in pod template
podPreserveUnknownFields : false
# CountsAndLists feature configuration
lists :
maxItems : 1000 # Max items in a list
Port Allocation
The port range minPort to maxPort is allocated from the node’s host ports . Ensure your port range doesn’t conflict with other services and is covered by firewall rules.
Namespace Configuration
By default, Agones only monitors the default namespace. To allow GameServers in additional namespaces:
helm install agones agones/agones \
--set gameservers.namespaces='{default,game-servers,prod-servers}'
Metrics Configuration
agones :
metrics :
# Prometheus metrics
prometheusEnabled : true
prometheusServiceDiscovery : true
# ServiceMonitor CRD (requires prometheus-operator)
serviceMonitor :
enabled : false
interval : 30s
additionalLabels : {}
# Google Cloud Stackdriver (GKE only)
stackdriverEnabled : false
stackdriverProjectID : ""
stackdriverLabels : ""
Enabling Prometheus ServiceMonitor
agones :
metrics :
serviceMonitor :
enabled : true
interval : 30s
additionalLabels :
prometheus : kube-prometheus
Feature Gates Reference
Stable Features (Always Enabled)
Feature Description DisableResyncOnSDKServerOptimizes SDK server performance by disabling periodic resyncs AutopilotPassthroughPortEnables port passthrough on GKE Autopilot
Beta Features (Enabled by Default)
Feature Description CountsAndLists=trueCounters and Lists for GameServers GKEAutopilotExtendedDurationPods=trueExtended duration pods on GKE Autopilot PortPolicyNone=trueDisable dynamic port allocation PortRanges=trueMultiple port ranges per GameServer ScheduledAutoscaler=trueSchedule-based Fleet autoscaling RollingUpdateFix=trueImproved rolling update behavior SidecarContainers=trueAdditional sidecar containers in GameServers FleetAutoscaleRequestMetaData=trueInclude metadata in autoscaler requests
Alpha Features (Disabled by Default)
Feature Description PlayerAllocationFilter=falseFilter allocations by player criteria PlayerTracking=falseTrack connected players in GameServer WasmAutoscaler=falseWebAssembly-based autoscaling policies
Dev Features (Experimental)
Feature Description ProcessorAllocator=falseProcessor-based allocation queue Example=falseExample feature for testing
Setting Feature Gates
helm install agones agones/agones \
--set agones.featureGates="CountsAndLists=true&PortRanges=true&PlayerTracking=true"
agones :
featureGates : "CountsAndLists=true&PortRanges=true&PlayerTracking=true"
Cloud-Specific Settings
Google Kubernetes Engine (GKE)
agones :
cloudProduct : "gke"
requireDedicatedNodes : true
metrics :
stackdriverEnabled : true
stackdriverProjectID : "your-project-id"
controller :
tolerations :
- key : "agones.dev/agones-system"
operator : "Equal"
value : "true"
effect : "NoExecute"
Amazon EKS
agones :
cloudProduct : "eks"
requireDedicatedNodes : true
extensions :
hostNetwork : true # Required for custom CNI
webhooks :
port : 8443 # Non-conflicting port
http :
port : 8081
allocator :
service :
annotations :
service.beta.kubernetes.io/aws-load-balancer-type : "nlb"
Azure AKS
agones :
cloudProduct : "aks"
requireDedicatedNodes : true
allocator :
service :
serviceType : LoadBalancer
Example Configurations
Development Environment
agones :
controller :
replicas : 1
logLevel : debug
extensions :
replicas : 1
allocator :
replicas : 1
ping :
replicas : 1
featureGates : "CountsAndLists=true&PortRanges=true&PlayerTracking=true"
gameservers :
namespaces :
- default
minPort : 7000
maxPort : 7100
Production Environment
agones :
controller :
replicas : 3
logLevel : info
resources :
requests :
cpu : 1000m
memory : 512Mi
limits :
cpu : 2000m
memory : 1Gi
pdb :
minAvailable : 2
extensions :
replicas : 3
resources :
requests :
cpu : 1000m
memory : 512Mi
limits :
cpu : 2000m
memory : 1Gi
pdb :
minAvailable : 2
allocator :
replicas : 5
resources :
requests :
cpu : 1000m
memory : 512Mi
limits :
cpu : 2000m
memory : 1Gi
pdb :
enabled : true
minAvailable : 3
ping :
replicas : 3
metrics :
prometheusEnabled : true
serviceMonitor :
enabled : true
featureGates : "CountsAndLists=true&PortRanges=true"
gameservers :
namespaces :
- default
- game-servers
- prod-servers
minPort : 7000
maxPort : 8000
Next Steps
Deploy Your First GameServer Create and test a simple game server
Fleet Management Learn about scaling game servers