Skip to content

Networking

Public traffic enters CloudFront. Pods stay private. No service mesh.

HopJob
WAFRate limits, managed rules, kill-switch. ACL in us-east-1.
CloudFrontTLS, cache, dual origin (S3 + internal NLB).
Traefik CloudFrontIn-cluster ingress. NLB is internal.
HTTPRouteService declares host + path. ExternalDNS writes Route53.

WAF: develop/prod COUNT (observe), perf BLOCK. A second Traefik (traefik-external) is for tools (Grafana), not the public product path.

Walk the request: DNS hits CloudFront, not a pod. WAF runs in us-east-1. Images (/B2C/images/*, /B2B/images/*) stop at S3. HTML/API go to an internal NLB (traefik-cloudfront). An HTTPRoute is host + path in that service’s custom-values.yaml — ExternalDNS writes Route53. The pod then uses Aurora/Valkey on private subnets. Hop-by-hop: Visual map § request.

Hosts

Prod: bigbash.site, admin.bigbash.site, gateway-prod.bigbash.site. Develop/perf: same roles on bigbash.life with -develop / -perf.

VPC

Develop / perfProd
VPCrfe-dev-vpc 10.10.0.0/16rfe-prod-vpc 10.30.0.0/16
Storesprivate, SG from VPC CIDRsame idea, prod CIDR

Bastion stacks: rfe-dev/bastion-ssm, prod bastion.tf.

Local VPN (laptop only)

make start-local-vpn puts those services on network_mode: service:gluetun. Fullstack B2B/B2C uses network_mode: host so SSR and the browser share localhost. Deep rules: Local-dev-setup.

Change CloudFront/WAF/VPC: Changes. 5xx at the edge: Troubleshooting.

Visual map

BigBash architecture SSOT — hosted for the team; edit via pull requests.