Installing Agones on Google Kubernetes Engine using Terraform

You can use Terraform to provision a GKE cluster and install Agones on it.

Before you begin

Take the following steps to enable the Kubernetes Engine API:

  1. Visit the Kubernetes Engine page in the Google Cloud Platform Console.
  2. Create or select a project.
  3. Wait for the API and related services to be enabled. This can take several minutes.
  4. Enable billing for your project.
    • If you are not an existing GCP user, you may be able to enroll for a $300 US Free Trial credit.

Choosing a shell

To complete this quickstart, we can use either Google Cloud Shell or a local shell.

Google Cloud Shell is a shell environment for managing resources hosted on Google Cloud Platform (GCP). Cloud Shell comes preinstalled with the gcloud and kubectl command-line tools. gcloud provides the primary command-line interface for GCP, and kubectl provides the command-line interface for running commands against Kubernetes clusters.

If you prefer using your local shell, you must install the gcloud and kubectl command-line tools in your environment.

Cloud shell

To launch Cloud Shell, perform the following steps:

  1. Go to Google Cloud Platform Console
  2. From the top-right corner of the console, click the Activate Google Cloud Shell button: cloud shell
  3. A Cloud Shell session opens inside a frame at the bottom of the console. Use this shell to run gcloud and kubectl commands.
  4. Set a compute zone in your geographical region with the following command. The compute zone will be something like us-west1-a. A full list can be found here.

    gcloud config set compute/zone [COMPUTE_ZONE]

Local shell

To install gcloud and kubectl, perform the following steps:

  1. Install the Google Cloud SDK, which includes the gcloud command-line tool.
  2. Initialize some default configuration by running the following command.

    • When asked Do you want to configure a default Compute Region and Zone? (Y/n)?, enter Y and choose a zone in your geographical region of choice.

      gcloud init
  3. Install the kubectl command-line tool by running the following command:

    gcloud components install kubectl


An example configuration can be found here: Terraform configuration with Agones submodule .

Copy this file into a local directory where you will execute the terraform commands.

The GKE cluster created from the example configuration will contain 3 Node Pools:

  • "default" node pool with "game-server" tag, containing 4 nodes.
  • "agones-system" node pool for Agones Controller.
  • "agones-metrics" for monitoring and metrics collecting purpose.

Additionally, a "tiller" service account will be created with ClusterRole.

Configurable parameters:

  • project - your Google Cloud Project ID (required)
  • name - the name of the GKE cluster (default is “agones-terraform-example”)
  • agones_version - the version of agones to install (default is the latest version from the Helm repository)
  • machine_type - machine type for hosting game servers (default is “n1-standard-4”)
  • node_count - count of game server nodes for the default node pool (default is “4”)

Creating the cluster

In the directory where you created, run:

terraform init

This will cause terraform to clone the Agones repository and use the ./build folder as starting point of Agones submodule, which contains all necessary Terraform configuration files.

Next make sure that you can authenticate using gcloud:

gcloud auth application-default login

Now you can create your GKE cluster (optionally specifying the version of Agones you want to use):

terraform apply -var project="<YOUR_GCP_ProjectID>" [-var agones_version="1.0.0"]

To verify that the cluster was created successfully, set up your kubectl credentials:

gcloud container clusters get-credentials --zone us-west1-c agones-terraform-example

Then check that you have access to the Kubernetes cluster:

kubectl get nodes

You should have 6 nodes in Ready state.

Uninstall the Agones and delete GKE cluster

To delete all resources provisioned by Terraform:

terraform destroy

Next Steps

Last modified January 11, 2020: Create AWS EKS Terraform Module (#986) (d3b9984d)