Skip to main content
The terraform-aws-chamber-eks module deploys a production-ready Amazon EKS 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.
The AWS provider uses your local credentials. Verify with aws sts get-caller-identity.
You need a cluster token and cluster ID from the Chamber Console. See Getting a Cluster Token for instructions.

Quick Start

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:
Private subnets must have outbound internet access (via NAT Gateway) for nodes to pull container images and connect to the Chamber control plane.

Key Variables

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

Required

AWS

VPC

EKS

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. Check for capacity errors:
Your AWS account lacks GPU Spot quota. Either request a quota increase via the AWS Service Quotas console, or set capacity_types = ["on-demand"].
This is expected when no GPU nodes exist yet. GPU Operator DaemonSets start automatically when Karpenter provisions GPU nodes in response to a workload.

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