diff --git a/infra/live/production/kapsule/terragrunt.hcl b/infra/live/production/kapsule/terragrunt.hcl index 7baa95a7b..758f02f51 100644 --- a/infra/live/production/kapsule/terragrunt.hcl +++ b/infra/live/production/kapsule/terragrunt.hcl @@ -26,4 +26,9 @@ inputs = { gitlab_type = "GP1-XS" # CI builds run on gpu-training pool (H100: 24 vCPU, 240GB, fast builds + GPU tests) + + # Dev pool (GP1-L for DevPod remote development, autoscales to zero) + enable_dev_pool = true + dev_pool_type = "GP1-L" + dev_pool_max_size = 1 } diff --git a/infra/modules/kapsule/main.tf b/infra/modules/kapsule/main.tf index 171dcdda7..aebf2cc03 100644 --- a/infra/modules/kapsule/main.tf +++ b/infra/modules/kapsule/main.tf @@ -89,3 +89,21 @@ resource "scaleway_k8s_pool" "gitlab" { region = var.region } +# CPU pool for remote development (DevPod — autoscales to zero) +resource "scaleway_k8s_pool" "dev" { + count = var.enable_dev_pool ? 1 : 0 + cluster_id = scaleway_k8s_cluster.foxhunt.id + name = "gpu-dev" + node_type = var.dev_pool_type + size = 1 + min_size = 0 + max_size = var.dev_pool_max_size + autoscaling = true + autohealing = true + region = var.region + + lifecycle { + ignore_changes = [size] + } +} + diff --git a/infra/modules/kapsule/variables.tf b/infra/modules/kapsule/variables.tf index c4fd9e2cb..a33f69890 100644 --- a/infra/modules/kapsule/variables.tf +++ b/infra/modules/kapsule/variables.tf @@ -69,3 +69,21 @@ variable "gitlab_type" { default = "DEV1-L" } +variable "enable_dev_pool" { + description = "Create CPU node pool for remote development (DevPod)" + type = bool + default = false +} + +variable "dev_pool_type" { + description = "Instance type for the dev node pool" + type = string + default = "GP1-L" +} + +variable "dev_pool_max_size" { + description = "Maximum number of nodes in the dev pool" + type = number + default = 1 +} +