TF: Current File Tree (Annotated)

tf-current-filetree Doc

architecture reference terraform

Current Terraform File Tree (Both Repos)

pal-e-platform

Resource Inventory (main.tf, top to bottom)

Pattern: Every platform component follows namespace → helm_release → funnel

This is a repeating 3-resource pattern (sometimes 4 with extras like configmaps). A natural module boundary.

pal-e-services

services.tf for_each Pattern (per service)

7 resources per service. Currently 4 services = 28 dynamic resources + 8 static = 36 total.

Combined Provider Map

Provider pal-e-platform pal-e-services
hashicorp/kubernetes yes yes
hashicorp/helm yes yes
tailscale/tailscale yes no (but uses TS ingress resources via kubernetes provider)
aminueza/minio yes no
goharbor/harbor no yes
argoproj-labs/argocd no yes

Cross-State Dependencies

pal-e-services depends on resources created by pal-e-platform but does not reference them via terraform_remote_state. Instead, dependencies are implicit:
  • Tailscale operator + ACL → must exist before funnel ingresses work
  • Harbor → must be running before harbor provider connects
  • Forgejo → must be running before ArgoCD can pull repos
  • Prometheus ServiceMonitor CRD → must exist before services can define ServiceMonitors
This works for a solo dev who applies platform first, services second. It will break when a CI pipeline tries to apply services independently.