Files
Will Anderson f2b025a433 Deploy soma to GCP Cloud Run at ai.neurontechnologies.ai
- Add cloud-run-soma.tf: soma-prod-us Cloud Run service in us-central1,
  neuron-soma-sa service account, soma Artifact Registry repo, Secret
  Manager secrets for HF token and operator key, serverless NEG, backend
  service, SSL cert
- Add dns-gcp.tf: Cloudflare A record for ai.neurontechnologies.ai pointing
  to GCP LB IP; Cloudflare provider added to main.tf/variables.tf
- Update load-balancer.tf: soma host rule + path matcher, soma SSL cert
  added to HTTPS proxy
- Update outputs.tf: soma service URL and artifact registry URL outputs
- Remove legion soma k8s manifests (Legion is gone)
- Update AGENTS.md to reflect GCP as primary production environment
2026-04-28 10:15:15 -05:00

101 lines
3.9 KiB
Terraform

# ── Outputs ───────────────────────────────────────────────────────────────────
# After `terraform apply`, use prod_lb_ip for Cloudflare DNS A records.
#
# All three services share the same global anycast IP (prod_lb_ip).
# Set these A records in Cloudflare (proxied=true for CDN + DDoS):
# neurontechnologies.ai → prod_lb_ip
# www.neurontechnologies.ai → prod_lb_ip
# api.neurontechnologies.ai → prod_lb_ip
# accounts.neurontechnologies.ai → prod_lb_ip
output "prod_lb_ip" {
description = "Global anycast IP for all prod services (marketing, accounts, api)"
value = google_compute_global_address.prod.address
}
output "prod_ssl_cert_name" {
description = "Marketing SSL cert (check provisioning status in GCP console)"
value = google_compute_managed_ssl_certificate.prod.name
}
output "accounts_ssl_cert_name" {
description = "Accounts SSL cert (check provisioning status in GCP console)"
value = google_compute_managed_ssl_certificate.accounts.name
}
output "api_ssl_cert_name" {
description = "API SSL cert (check provisioning status in GCP console)"
value = google_compute_managed_ssl_certificate.api.name
}
output "marketing_service_account_email" {
description = "Marketing Cloud Run SA"
value = google_service_account.marketing.email
}
output "accounts_service_account_email" {
description = "Accounts Cloud Run SA"
value = google_service_account.accounts.email
}
output "api_service_account_email" {
description = "API Cloud Run SA"
value = google_service_account.api.email
}
output "ci_pusher_email" {
description = "CI SA email — use to create the JSON key for GCP_SA_KEY Gitea secret"
value = google_service_account.ci_pusher.email
}
output "cloud_sql_connection_name" {
description = "Cloud SQL instance connection name — use in Cloud Run volume mounts"
value = google_sql_database_instance.main.connection_name
}
output "cloud_sql_instance_ip" {
description = "Cloud SQL public IP (for bastion/migration access — disable when not needed)"
value = google_sql_database_instance.main.public_ip_address
}
output "cloud_run_services" {
description = "Cloud Run service URLs per service and region"
value = {
marketing_us = google_cloud_run_v2_service.prod_us.uri
marketing_eu = google_cloud_run_v2_service.prod_eu.uri
marketing_apac = google_cloud_run_v2_service.prod_apac.uri
accounts_us = google_cloud_run_v2_service.accounts_us.uri
accounts_eu = google_cloud_run_v2_service.accounts_eu.uri
accounts_apac = google_cloud_run_v2_service.accounts_apac.uri
api_us = google_cloud_run_v2_service.api_us.uri
api_eu = google_cloud_run_v2_service.api_eu.uri
api_apac = google_cloud_run_v2_service.api_apac.uri
soma_us = google_cloud_run_v2_service.soma_us.uri
}
}
output "artifact_registry_urls" {
description = "Docker image base URLs for each service"
value = {
marketing = "us-central1-docker.pkg.dev/${var.project_id}/neuron-marketing/marketing"
accounts = "us-central1-docker.pkg.dev/${var.project_id}/neuron-accounts/accounts"
api = "us-central1-docker.pkg.dev/${var.project_id}/neuron-api/api"
soma = "us-central1-docker.pkg.dev/${var.project_id}/neuron-soma/soma"
}
}
output "soma_service_url" {
description = "Soma Cloud Run service URL (us-central1)"
value = google_cloud_run_v2_service.soma_us.uri
}
output "soma_artifact_registry_url" {
description = "Soma Docker image base URL in Artifact Registry"
value = "us-central1-docker.pkg.dev/${var.project_id}/neuron-soma/soma"
}
output "soma_ssl_cert_name" {
description = "Soma SSL cert (check provisioning status in GCP console)"
value = google_compute_managed_ssl_certificate.soma.name
}