Files
infrastructure/servers/legion/dns-neurontechnologies.tf
Will Anderson b70fef611a deploy DHARMA registry to neuron-prod
- Dockerfile for Go DHARMA server (registry.neuralplatform.ai/neuron-technologies/dharma)
- k8s manifests: deployment, service, ExternalSecret (Vault), IngressRoute
- Argo CD app: deploys to neuron-prod namespace
- Cloudflare tunnel rule for dharma.neurontechnologies.ai
- DNS CNAME record for dharma.neurontechnologies.ai → legion tunnel
- Vault secrets already populated (api_key, encryption_key, jwt_secret, engram_key, engram_url)
- Connects to neuron-daemon (engram) at neuron-daemon.neuron-prod.svc.cluster.local:7749
2026-05-03 13:26:54 -05:00

215 lines
7.5 KiB
Terraform

# ── neurontechnologies.ai DNS ─────────────────────────────────────────────────
# Google Workspace MX, SPF, and DMARC records.
# After signing up for Google Workspace, add your verification TXT record below.
# ── Cloudflare tunnel CNAMEs ─────────────────────────────────────────────────
# All three environments route through the legion tunnel to Traefik.
# proxied = true enables Cloudflare proxy (CDN, DDoS, SSL termination).
# ttl = 1 means "auto" when proxied.
resource "cloudflare_record" "nt_tunnel_neuron" {
zone_id = local.zone_neurontechnologies_ai
name = "neuron"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_api" {
zone_id = local.zone_neurontechnologies_ai
name = "api"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_prod" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_www" {
zone_id = local.zone_neurontechnologies_ai
name = "www"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
# dev.neurontechnologies.ai DNS moved to servers/gcp/marketing-dev.tf
# (Cloud Run-fronted marketing dev environment). The legion-side
# neuron-dev namespace + ingress + tunnel ingress_rule remain in place
# but no longer receive traffic - they're inert until a follow-up
# decision retires them or rehosts under mcp-dev.neurontechnologies.ai.
# See backlog: "Retire or rehost legion neuron-dev namespace".
resource "cloudflare_record" "nt_tunnel_stage" {
zone_id = local.zone_neurontechnologies_ai
name = "stage"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_alpha" {
zone_id = local.zone_neurontechnologies_ai
name = "alpha"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_ai" {
zone_id = local.zone_neurontechnologies_ai
name = "ai"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_beta" {
zone_id = local.zone_neurontechnologies_ai
name = "beta"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_gamma" {
zone_id = local.zone_neurontechnologies_ai
name = "gamma"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
resource "cloudflare_record" "nt_tunnel_dharma" {
zone_id = local.zone_neurontechnologies_ai
name = "dharma"
type = "CNAME"
content = "${var.cloudflare_tunnel_id}.cfargotunnel.com"
proxied = true
ttl = 1
}
# ── Google Workspace MX records ──────────────────────────────────────────────
resource "cloudflare_record" "nt_mx_1" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "MX"
content = "aspmx.l.google.com"
priority = 1
ttl = 3600
}
resource "cloudflare_record" "nt_mx_2" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "MX"
content = "alt1.aspmx.l.google.com"
priority = 5
ttl = 3600
}
resource "cloudflare_record" "nt_mx_3" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "MX"
content = "alt2.aspmx.l.google.com"
priority = 5
ttl = 3600
}
resource "cloudflare_record" "nt_mx_4" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "MX"
content = "alt3.aspmx.l.google.com"
priority = 10
ttl = 3600
}
resource "cloudflare_record" "nt_mx_5" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "MX"
content = "alt4.aspmx.l.google.com"
priority = 10
ttl = 3600
}
# ── SPF ───────────────────────────────────────────────────────────────────────
resource "cloudflare_record" "nt_spf" {
zone_id = local.zone_neurontechnologies_ai
name = "@"
type = "TXT"
content = "v=spf1 include:_spf.google.com ~all"
ttl = 3600
}
# ── DMARC ─────────────────────────────────────────────────────────────────────
resource "cloudflare_record" "nt_dmarc" {
zone_id = local.zone_neurontechnologies_ai
name = "_dmarc"
type = "TXT"
content = "v=DMARC1; p=quarantine; rua=mailto:admin@neurontechnologies.ai"
ttl = 3600
}
# ── Google Workspace domain verification (CNAME method) ──────────────────────
resource "cloudflare_record" "nt_google_verify" {
zone_id = local.zone_neurontechnologies_ai
name = "70280652"
type = "CNAME"
content = "google.com"
ttl = 3600
}
# ── DKIM ──────────────────────────────────────────────────────────────────────
resource "cloudflare_record" "nt_dkim" {
zone_id = local.zone_neurontechnologies_ai
name = "google._domainkey"
type = "TXT"
content = "v=DKIM1;k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3CbdL8/TV2cklPmt/qb5cjtNYZwWQEOe2xIDDDnNTW/MkJfW7JTQP8v/OAOPACmJqEAG/fPdb8qwAn7S3YrYoPR2QG+CkBym3dq55IWEcMondfKVX2URnoelLlwt7juLwk6115Tgn0m0sGcqZvvF662xygrGb3SLkF6aeeO4fc6u5TsgkxBS5W2DngprbtlUmj+PjpIY5T3Jb6EWB3O2zbnKHKvDbYtaMq2P+fDr/EVM+qERdUyFjIFR41N7dbTHIP60+Sv4lbm5yd6FA8HCGFdeF6q2gTwxwh9bVMpe6oqHzGr1Z14qtwNohRdKWiwhYzowswIOPTK5VV2FwnKu9QIDAQAB"
ttl = 3600
}
# ── Resend DKIM ───────────────────────────────────────────────────────────────
resource "cloudflare_record" "nt_resend_dkim" {
zone_id = local.zone_neurontechnologies_ai
name = "resend._domainkey"
type = "TXT"
content = "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0/2NCH7IEgwYlRsL6ZFGqis2DU63LlWP4Cw6QFBgxVPDto9Le9Tqi6doHZuP/ijwoyDz4Ra68cV/bB1klrTHb4B6r8b3xDy8XcGShA45HljxYa22z2r4BUnmsFG5cXGT8pccYlix0LnVaXIVKPVprofznLNNv0T4/4v2x8ezh5wIDAQAB"
ttl = 3600
}
# ── Resend SPF (send subdomain) ───────────────────────────────────────────────
resource "cloudflare_record" "nt_resend_spf_mx" {
zone_id = local.zone_neurontechnologies_ai
name = "send"
type = "MX"
content = "feedback-smtp.us-east-1.amazonses.com"
priority = 10
ttl = 3600
}
resource "cloudflare_record" "nt_resend_spf_txt" {
zone_id = local.zone_neurontechnologies_ai
name = "send"
type = "TXT"
content = "v=spf1 include:amazonses.com ~all"
ttl = 3600
}