Files
zeekay dde006617a Initial commit: EKS GPU CI infrastructure
EKS cluster with Karpenter v1 NodePool that scales g4dn.xlarge spot
instances 0..1 on demand for CUDA workflows. ARC RunnerScaleSet
registers as [self-hosted, linux, amd64, cuda, gpu, t4].

Components:
- terraform/ — VPC, EKS 1.31, system node group, Karpenter IAM/SQS
- helm/karpenter-nodepool.yaml — v1 NodePool + EC2NodeClass for GPU spot
- helm/nvidia-device-plugin-values.yaml — DS with GPU taint toleration
- helm/arc-values.yaml + helm/runner-scaleset.yaml — ARC v0.9.x
- bootstrap.sh — one-shot deploy
- Makefile — init/apply/destroy/verify/cost-estimate

Cost: ~$138/mo idle (EKS control plane + tiny system node + NAT),
~$0.027/build for a 10-minute g4dn.xlarge spot run.
2026-02-27 09:00:00 -08:00

46 lines
1.0 KiB
Terraform

variable "region" {
description = "AWS region. us-west-2 has good g4dn spot capacity."
type = string
default = "us-west-2"
}
variable "cluster_name" {
description = "EKS cluster name."
type = string
default = "lux-gpu-ci"
}
variable "cluster_version" {
description = "Kubernetes minor version."
type = string
default = "1.31"
}
variable "vpc_cidr" {
description = "VPC CIDR block."
type = string
default = "10.42.0.0/16"
}
variable "system_instance_type" {
description = "Instance type for the always-on system node group (Karpenter, ARC controller, kube-system)."
type = string
default = "t3.medium"
}
variable "github_org" {
description = "GitHub organization that hosts the runner repos."
type = string
default = "luxfi"
}
variable "tags" {
description = "Tags applied to all resources."
type = map(string)
default = {
Project = "lux-gpu-ci"
ManagedBy = "terraform"
Component = "gpu-ci"
}
}