Phase 2 of platform stack split. 5 more modules extracted into independent stacks. All applied successfully with zero destroys. Cloudflared now reads k8s_users from Vault directly to compute user_domains. Woodpecker pipeline runs all 8 extracted stacks in parallel. Memory bumped to 6Gi for 9 concurrent TF processes. Platform reduced from 27 to 19 modules.
42 lines
1.6 KiB
HCL
42 lines
1.6 KiB
HCL
# =============================================================================
|
|
# Cloudflared Stack — Cloudflare tunnel + DNS records
|
|
# =============================================================================
|
|
|
|
variable "tls_secret_name" { type = string }
|
|
variable "cloudflare_email" { type = string }
|
|
variable "cloudflare_account_id" { type = string }
|
|
variable "cloudflare_zone_id" { type = string }
|
|
variable "cloudflare_tunnel_id" { type = string }
|
|
variable "public_ip" { type = string }
|
|
variable "cloudflare_proxied_names" {}
|
|
variable "cloudflare_non_proxied_names" {}
|
|
|
|
data "vault_kv_secret_v2" "secrets" {
|
|
mount = "secret"
|
|
name = "platform"
|
|
}
|
|
|
|
locals {
|
|
k8s_users = jsondecode(data.vault_kv_secret_v2.secrets.data["k8s_users"])
|
|
|
|
user_domains = flatten([
|
|
for name, user in local.k8s_users : lookup(user, "domains", [])
|
|
if user.role == "namespace-owner"
|
|
])
|
|
}
|
|
|
|
module "cloudflared" {
|
|
source = "./modules/cloudflared"
|
|
tier = local.tiers.core
|
|
tls_secret_name = var.tls_secret_name
|
|
|
|
cloudflare_api_key = data.vault_kv_secret_v2.secrets.data["cloudflare_api_key"]
|
|
cloudflare_email = var.cloudflare_email
|
|
cloudflare_account_id = var.cloudflare_account_id
|
|
cloudflare_zone_id = var.cloudflare_zone_id
|
|
cloudflare_tunnel_id = var.cloudflare_tunnel_id
|
|
public_ip = var.public_ip
|
|
cloudflare_proxied_names = concat(var.cloudflare_proxied_names, nonsensitive(local.user_domains))
|
|
cloudflare_non_proxied_names = var.cloudflare_non_proxied_names
|
|
cloudflare_tunnel_token = data.vault_kv_secret_v2.secrets.data["cloudflare_tunnel_token"]
|
|
}
|