Files
terraform-hcloud-talos/talos_patch_worker.tf
Silvan Kohler 5a0b05d494 fix: update supported server types
Updated the supported server types to reflect the available server types returned by the hetzner api

Signed-off-by: Silvan Kohler <silvan@khlr.dev>
2025-10-30 00:38:34 +01:00

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"
}
}
}
}
}
}