infrastructure/k8s.tjo.cloud/main.tf

81 lines
1.6 KiB
Terraform
Raw Normal View History

module "cluster" {
source = "../modules/cluster"
providers = {
helm.template = helm.template
}
talos = {
version = "v1.7.5"
kubernetes = "v1.30.0"
}
cluster = {
name = "tjo-cloud"
domain = "k8s.tjo.cloud"
oidc = {
client_id = var.oidc_client_id
issuer_url = var.oidc_issuer_url
}
}
proxmox = {
name = "tjo-cloud"
url = "https://proxmox.tjo.cloud/api2/json"
2024-07-19 20:48:07 +00:00
common_storage = "proxmox-backup-tjo-cloud"
}
tailscale_authkey = var.tailscale_authkey
nodes = {
pink = {
2024-07-19 20:48:07 +00:00
public = true
type = "controlplane"
host = "hetzner"
2024-07-21 10:27:40 +00:00
storage = "main"
2024-07-19 20:48:07 +00:00
cores = 4
memory = 4096
}
blue = {
2024-07-19 20:48:07 +00:00
public = false
type = "worker"
host = "hetzner"
2024-07-21 10:27:40 +00:00
storage = "main"
cores = 6
2024-07-19 20:48:07 +00:00
memory = 16384
}
cyan = {
2024-07-19 20:48:07 +00:00
public = false
type = "worker"
host = "hetzner"
2024-07-21 10:27:40 +00:00
storage = "main"
cores = 6
2024-07-19 20:48:07 +00:00
memory = 16384
}
}
}
resource "local_file" "kubeconfig" {
content = module.cluster.kubeconfig
filename = "${path.module}/kubeconfig"
}
2024-07-20 11:09:30 +00:00
module "cluster_components" {
source = "../modules/cluster-components"
2024-07-20 11:09:30 +00:00
oidc_issuer_url = var.oidc_issuer_url
oidc_client_id = var.oidc_client_id
digitalocean_token = var.digitalocean_token
cluster_name = module.cluster.name
cluster_domain = module.cluster.domain
loadbalancer_ips = {
hetzner-public = {
ipv4 = [for k, node in module.cluster.nodes : node.ipv4 if node.public]
ipv6 = [for k, node in module.cluster.nodes : node.ipv6 if node.public]
}
}
}