feat(terraform): add per-node Cloudflare Tunnel cert SANs to controlplane certSANs — remote talosctl/kubectl over tunnel pass TLS verification
Adds optional cloudflare_talos_sans (machine.certSANs, talos API :50000) and cloudflare_apiserver_sans (cluster.apiServer.certSANs, kube-apiserver :6443) per control-plane node. cp-1 gets cp1.homelab + cp1-talos.homelab; cp-2/cp-3 get their cpN-talos.homelab. Values set in gitignored tfvars.
This commit is contained in:
@@ -51,6 +51,10 @@ resource "local_file" "controlplane_configs" {
|
|||||||
zone = each.value.zone
|
zone = each.value.zone
|
||||||
allow_scheduling = each.value.allow_scheduling
|
allow_scheduling = each.value.allow_scheduling
|
||||||
|
|
||||||
|
# Cloudflare Tunnel cert SANs (talos :50000 and kube-apiserver :6443)
|
||||||
|
cloudflare_talos_sans = each.value.cloudflare_talos_sans
|
||||||
|
cloudflare_apiserver_sans = each.value.cloudflare_apiserver_sans
|
||||||
|
|
||||||
# Cluster config
|
# Cluster config
|
||||||
cluster_id = var.cluster_id
|
cluster_id = var.cluster_id
|
||||||
cluster_secret = var.cluster_secret
|
cluster_secret = var.cluster_secret
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ machine:
|
|||||||
%{ if wg0_ip != null ~}
|
%{ if wg0_ip != null ~}
|
||||||
- ${wg0_ip}
|
- ${wg0_ip}
|
||||||
%{ endif ~}
|
%{ endif ~}
|
||||||
|
%{ for san in cloudflare_talos_sans ~}
|
||||||
|
- ${san}
|
||||||
|
%{ endfor ~}
|
||||||
network:
|
network:
|
||||||
hostname: ${hostname}
|
hostname: ${hostname}
|
||||||
interfaces:
|
interfaces:
|
||||||
@@ -145,6 +148,9 @@ cluster:
|
|||||||
- ${wg0_ip}
|
- ${wg0_ip}
|
||||||
%{ endif ~}
|
%{ endif ~}
|
||||||
- ${lan_ip}
|
- ${lan_ip}
|
||||||
|
%{ for san in cloudflare_apiserver_sans ~}
|
||||||
|
- ${san}
|
||||||
|
%{ endfor ~}
|
||||||
image: ${kube_apiserver_img}
|
image: ${kube_apiserver_img}
|
||||||
admissionControl:
|
admissionControl:
|
||||||
- name: PodSecurity
|
- name: PodSecurity
|
||||||
|
|||||||
@@ -130,6 +130,10 @@ variable "controlplane_configs" {
|
|||||||
}))
|
}))
|
||||||
zone = string
|
zone = string
|
||||||
allow_scheduling = bool
|
allow_scheduling = bool
|
||||||
|
# Extra cert SANs for this node — e.g. Cloudflare Tunnel public hostnames so
|
||||||
|
# remote talosctl/kubectl over the tunnel pass TLS verification.
|
||||||
|
cloudflare_talos_sans = optional(list(string), [])
|
||||||
|
cloudflare_apiserver_sans = optional(list(string), [])
|
||||||
}))
|
}))
|
||||||
description = "Control plane machine configurations, keyed by node"
|
description = "Control plane machine configurations, keyed by node"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user