Task #65
Updated by Daniele Cruciani 3 months ago
[2025-12-07 21:20]
Sì, Traefik è un reverse proxy a tutti gli effetti.
Sotto il cofano fa routing L7 (HTTP) e L4 (TCP/UDP), terminazione TLS, middleware, load balancing.
La differenza rispetto a NGINX/HAProxy è che la configurazione è dinamica: non devi mai ricaricare file di config.
Ora ti spiego in modo pratico come funziona “backend” e “frontend”, concetti ereditati dalla v1 ma ancora utili per capire la logica.
⸻
✔ Traefik = Reverse Proxy dinamico
Quando arriva una richiesta:
1. guarda l’hostname / path / ACL
2. decide a quale “service” inoltrare (cluster interno)
3. applica middleware (auth, rate limit, header, rewrite…)
4. bilancia il carico sui pod target
Tutto qui.
È un reverse proxy che si aggiorna leggendo ingress, crd, label docker, ecc.
⸻
Backend e Frontend: concetto storico (ma ancora valido)
Nelle versioni vecchie (<v2), Traefik aveva due oggetti distinti:
• Frontend = come riconosco la richiesta? (regole di routing)
• Backend = dove inoltro il traffico? (target servers)
La v2 usa nomi diversi, ma la logica è IDENTICA:
Traefik v1 Traefik v2 (oggi) Significato
Frontend Router Regole: host, path, method…
Backend Service Lista server/pod da contattare
Middleware Middleware Azioni sulla richiesta
Questa distinzione è pratica:
Prima capisci se la richiesta deve entrare, poi dove deve andare.
⸻
Spiegazione chiara dei componenti v2
1. Router (ex Frontend)
Fa matching sul traffico in ingresso.
Esempi:
• Host("api.example.com")
• PathPrefix("/v1/")
• Method("GET")
• TLS on/off, SNI, ecc.
Il router collega:
entrypoint → middleware → service
⸻
2. Service (ex Backend)
È l’oggetto che rappresenta i server di destinazione.
Può essere:
• un Service Kubernetes (ClusterIP)
• un IP/porta statico
• un servizio TCP o UDP
• un load balancer round-robin
• un mirror di traffico
Esempio (CRD semplificata):
kind: TraefikService
spec:
loadBalancer:
servers:
- url: http://my-service:8080
⸻
3. Middleware
Azioni sulla richiesta prima di arrivare al service:
• autenticazione
• rewrite path
• rate limit
• redirect https
• compressione
• header injection
• buffering
• strip prefix
• IP whitelist
• checksum JWT (in teoria puoi farlo qui)
Middleware = mini pipeline componibile.
⸻
Flusso completo
[ Entrypoint (porta 80/443) ]
|
v
[ Router (match: host, path, method...)
|
v
[ Middleware chain ]
|
v
[ Service / Backend (pod target) ]
⸻
Per Kubernetes nello specifico
Router e Service derivano da:
• Ingress
• IngressRoute (CRD)
• Kubernetes Service
• Endpoints / EndpointSlice
• Annotations o CRD Middleware
Traefik non crea nulla nel cluster:
legge tutto e aggiorna la sua mappa di routing interna.
⸻
Risposta secca alle tue domande
Traefik agisce come reverse proxy?
✔ Sì, senza dubbi.
Cos’è il frontend Traefik?
→ In v1 = regole di routing.
→ In v2 = Router.
Cos’è il backend Traefik?
→ In v1 = server target.
→ In v2 = TraefikService / load balancer verso pod.
⸻
Se vuoi ti preparo uno schema grafico semplice o una mappa mentale dei componenti Traefik.