TLS Termination: Load Balancer vs Sidecar vs In-App

Three patterns we evaluated for mTLS between services — latency, ops burden, and cert rotation.

Internal service mesh was overkill. We still needed TLS between gateway and upstream services.

Options

PatternTerminationCert rotationAdded latency
LB (ALB/NLB)Edge onlyACM auto~0.5ms
Sidecar (nginx)Per podManual / cert-manager~1ms
In-app (Kestrel)App processcert-manager secret mount~0.3ms

Decision

  • Public traffic: ALB termination, ACM certs
  • Gateway → internal APIs: cert-manager + nginx sidecar on upstream pods
  • East-west later: deferred mesh until service count exceeds 20

Cert rotation runbook: cert-manager Certificate CR with 30-day renew window, alert 7 days before expiry.

tls , mTLS , architecture · Kubernetes , Nginx

More in Networking