mirror of
https://github.com/outbackdingo/terraform-hcloud-talos.git
synced 2026-01-27 10:20:30 +00:00
Updated the supported server types to reflect the available server types returned by the hetzner api Signed-off-by: Silvan Kohler <silvan@khlr.dev>
114 lines
3.4 KiB
HCL
114 lines
3.4 KiB
HCL
locals {
|
|
# Define a dummy worker entry for when count is 0
|
|
dummy_workers = local.total_worker_count == 0 ? [{
|
|
index = 0
|
|
name = "dummy-worker-0"
|
|
server_type = "cpx11"
|
|
image_id = null
|
|
ipv4_public = "0.0.0.0" # Fallback
|
|
ipv6_public = null # Fallback
|
|
ipv6_public_subnet = null # Fallback
|
|
ipv4_private = cidrhost(local.node_ipv4_cidr, 200) # Use a predictable dummy private IP
|
|
labels = {}
|
|
taints = []
|
|
node_group_index = 0
|
|
node_in_group_index = 0
|
|
}] : []
|
|
|
|
# Combine real and dummy workers - always include dummy when no workers exist
|
|
# merged_workers = local.total_worker_count == 0 ? local.dummy_workers : local.workers
|
|
merged_workers = concat(local.workers, local.dummy_workers)
|
|
|
|
# Generate YAML for all (real or dummy) workers
|
|
worker_yaml = {
|
|
for worker in local.merged_workers : worker.name => {
|
|
machine = {
|
|
install = {
|
|
image = "ghcr.io/siderolabs/installer:${var.talos_version}"
|
|
extraKernelArgs = [
|
|
"ipv6.disable=${var.enable_ipv6 ? 0 : 1}",
|
|
]
|
|
}
|
|
certSANs = local.cert_SANs
|
|
kubelet = merge(
|
|
{
|
|
extraArgs = merge(
|
|
{
|
|
"cloud-provider" = "external"
|
|
"rotate-server-certificates" = true
|
|
},
|
|
var.kubelet_extra_args
|
|
)
|
|
nodeIP = {
|
|
validSubnets = [
|
|
local.node_ipv4_cidr
|
|
]
|
|
}
|
|
},
|
|
# Add registerWithTaints if taints are defined
|
|
length(worker.taints) > 0 ? {
|
|
extraConfig = {
|
|
registerWithTaints = [
|
|
for taint in worker.taints : {
|
|
key = taint.key
|
|
value = taint.value
|
|
effect = taint.effect
|
|
}
|
|
]
|
|
}
|
|
} : {}
|
|
)
|
|
network = {
|
|
extraHostEntries = local.extra_host_entries
|
|
kubespan = {
|
|
enabled = var.enable_kube_span
|
|
advertiseKubernetesNetworks : false # Disabled because of cilium
|
|
mtu : 1370 # Hcloud has a MTU of 1450 (KubeSpanMTU = UnderlyingMTU - 80)
|
|
}
|
|
}
|
|
kernel = {
|
|
modules = var.kernel_modules_to_load
|
|
}
|
|
sysctls = merge(
|
|
{
|
|
"net.core.somaxconn" = "65535"
|
|
"net.core.netdev_max_backlog" = "4096"
|
|
},
|
|
var.sysctls_extra_args
|
|
)
|
|
features = {
|
|
hostDNS = {
|
|
enabled = true
|
|
forwardKubeDNSToHost = true
|
|
resolveMemberNames = true
|
|
}
|
|
}
|
|
time = {
|
|
servers = [
|
|
"ntp1.hetzner.de",
|
|
"ntp2.hetzner.com",
|
|
"ntp3.hetzner.net",
|
|
"time.cloudflare.com"
|
|
]
|
|
}
|
|
nodeLabels = worker.labels
|
|
registries = var.registries
|
|
}
|
|
cluster = {
|
|
network = {
|
|
dnsDomain = var.cluster_domain
|
|
podSubnets = [
|
|
local.pod_ipv4_cidr
|
|
]
|
|
serviceSubnets = [
|
|
local.service_ipv4_cidr
|
|
]
|
|
cni = {
|
|
name = "none"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|