Skip to main content
The terraform-google-chamber-gke module deploys a production-ready Google GKE cluster with GPU autoscaling, NVIDIA drivers, and the Chamber Agent — all in a single terraform apply.

Prerequisites

Install from developer.hashicorp.com/terraform/install. Verify with terraform version.
Install the gcloud CLI and authenticate:
Enable the required APIs in your project:
You need a cluster token and cluster ID from the Chamber Console. See Getting a Cluster Token for instructions.

Quick Start

The GKE module requires explicit provider configuration because the kubernetes, helm, and kubectl providers need the cluster endpoint and credentials from the module outputs. The full configuration is shown below.
1

Create main.tf

Create a new directory for your Terraform configuration and add a main.tf file:
2

Create terraform.tfvars

Do not commit terraform.tfvars to version control. Add it to .gitignore. For CI/CD pipelines, use environment variables: TF_VAR_chamber_cluster_token.
3

Deploy

Deployment takes approximately 15-20 minutes.
4

Configure kubectl

5

Verify

Your cluster should appear in the Chamber Console under Capacity Pools.

Using an Existing VPC

To deploy into an existing VPC instead of creating a new one:
The existing subnet must have secondary IP ranges named for pods and services. Cloud NAT must be configured for private node egress.

Key Variables

The table below covers the most commonly configured variables. For the complete list, see the module README on GitHub.

Required

GCP

VPC

GKE

GPU

Chamber

Key Outputs

For all outputs, see the module README on GitHub.

GPU Pool Management

After deployment, you need GPU pools for Karpenter to know which GPU nodes to provision. There are two approaches:
Manage GPU pools through the Chamber Console:
  1. Go to Capacity Pools > Create Dynamic Pool
  2. Select your cluster and configure GPU type, limits, and capacity types
  3. The pool syncs to your cluster automatically — Karpenter provisions GPU nodes on demand
This is the recommended approach for most teams. It allows per-GPU-type management with real-time limit adjustments.

Troubleshooting

Check the Chamber Agent logs:
Verify your chamber_cluster_token and chamber_cluster_id are correct.
  1. Verify a GPU pool exists:
    If none exists, create one via the Chamber Console or set create_default_gpu_nodepool = true.
  2. Check Karpenter logs:
  3. Verify GCENodeClass:
Check the KAI Scheduler logs and pod events:

Cleanup

Ensure all GPU workloads are terminated before destroying to avoid orphaned resources.

Next Steps

Quickstart

Submit your first GPU workload

Capacity Management

Configure capacity pools and reservations

Agent Troubleshooting

Detailed troubleshooting guide

GitHub Repository

Full source, examples, and changelog