Files
Ryan Moon 911bc3eb76
Some checks failed
Terraform / terraform (push) Failing after 0s
Test / test (push) Successful in 37s
fix: ignore default node_pool in cluster lifecycle to prevent recreation
2026-04-03 07:20:55 -05:00

57 lines
1.6 KiB
HCL

# ─── DOKS Cluster ─────────────────────────────────────────────────────────────
resource "digitalocean_kubernetes_cluster" "main" {
name = "lunarfront"
region = var.region
version = var.k8s_version
# Required by provider but managed externally — do not let Terraform recreate
node_pool {
name = "workers"
size = "s-2vcpu-4gb"
node_count = 0
}
lifecycle {
ignore_changes = [node_pool]
}
tags = ["lunarfront", "k8s"]
}
# Customer pool — auto-scales for customer app instances
resource "digitalocean_kubernetes_node_pool" "system" {
cluster_id = digitalocean_kubernetes_cluster.main.id
name = "system"
size = var.k8s_system_node_size
node_count = 2
labels = {
role = "system"
}
}
resource "digitalocean_kubernetes_node_pool" "customers" {
cluster_id = digitalocean_kubernetes_cluster.main.id
name = "customers"
size = var.k8s_customer_node_size
min_nodes = 0
max_nodes = var.k8s_max_customer_nodes
auto_scale = true
labels = {
role = "customer"
}
}
# ─── DNS — wildcard for customer subdomains → cluster load balancer ───────────
# Uncomment after the cluster is up and nginx ingress load balancer IP is known.
# Set cluster_lb_ip in terraform.tfvars then re-run terraform apply.
resource "cloudflare_record" "apps_wildcard" {
zone_id = data.cloudflare_zone.main.id
name = "*"
type = "A"
content = var.cluster_lb_ip
proxied = true
ttl = 1
}