Project

General

Profile

Actions

Task #65

open

Milestone #63: GateWay Manager

Traefik & Kubernetes

Task #65: Traefik & Kubernetes

Added by Daniele Cruciani 3 months ago. Updated 3 months ago.

Status:
new
Priority:
wishlist
Assignee:
-
Start date:
Due date:
% Done:

0%

Estimated time:
Sprint:

Description

[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

  1. 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

  1. 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.

Updated by Daniele Cruciani 3 months ago Actions #1

  • Description updated (diff)

[2025-12-07 21:27]

Ok, andiamo dritti al punto e senza mezzi termini.

✔ 1. IngressRoute è un CRD Traefik

Sì. Ed è il modo principale con cui definisci routing avanzato.

Con IngressRoute puoi dire a Traefik:
• quale host/path matchare
• quale service interno contattare
• quale middleware applicare
• quale entrypoint usare

Esempio minimo:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
spec:
entryPoints:
- web
routes:
- match: Host(api.example.com)
kind: Rule
services:
- name: my-service
port: 8080

Quindi sì: è con IngressRoute che punti a un Service interno.

✔ 2. I Middleware sono CRD Traefik

Assolutamente sì.

Traefik installa CRD per:
• Middleware
• MiddlewareTCP
• TLSOptions
• TLSStore
• TraefikService
• ecc.

Il middleware è un oggetto YAML che puoi creare nel cluster:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: strip
spec:
stripPrefix:
prefixes:
- "/api"

Poi lo referenzi nell’IngressRoute.

✔ 3. Middleware e autenticazione: cosa può e NON può fare

Può fare:
• BasicAuth
• DigestAuth
• ForwardAuth
• Auth con un provider esterno
• Rate limit
• IP whitelisting
• Header rewriting
• JWT solo tramite forward-auth esterno (→ NON nativo)

NON può fare:

❌ Verificare JWT nativamente
❌ Decodificare (spacchettare) il JWT
❌ Reiniettare claim JWT nel header in modo nativo*

Traefik NON ha un middleware JWT built-in.

Per validare JWT la pratica è:

✔ Usare ForwardAuth

ForwardAuth manda la request a un tuo microservizio che:
1. verifica la signature JWT
2. valida exp, iss, aud
3. restituisce 2xx o 401
4. opzionalmente aggiunge header con i claim (X-User-Id, X-Role, ecc.)

Esempio Middleware:

kind: Middleware
spec:
forwardAuth:
address: http://auth-service:8080/verify
trustForwardHeader: true

Questo è lo standard.

✔ 4. Traefik “spacchetta” il JWT?

❌ NO. Mai.
Non è una feature che ha.

Lo devi fare tu con un microservizio oppure usare un provider esterno (Keycloak, Auth0, OIDC proxy, ecc.).

✔ 5. Che protocolli supporta Traefik?

HTTP/1.1

✔ Supportato al 100%.

HTTP/2

✔ Supportato (frontend e backend).
La terminazione TLS con HTTP/2 è ok.

HTTP/3 (QUIC)

✔ Supportato, ma considerato ancora “experimental” → devi abilitarlo negli entrypoints.

TCP

✔ Sì (pass-through o con routing SNI).

UDP

✔ Sì (solo forwarding).

Riepilogo secco (no fronzoli):
• IngressRoute è il CRD Traefik per definire routing → sì.
• Middleware sono CRD che puoi definire tu → sì.
• Traefik verifica JWT nativamente? → no.
• Può spacchettare il JWT e propagarne i claim? → no (lo fai via forward-auth esterno).
• Protocol support: HTTP/1.1, HTTP/2, HTTP/3(alfa), TCP, UDP.

Se vuoi ti preparo uno schema grafico “componenti Traefik” o un esempio completo di definizione IngressRoute + Middleware + TraefikService.

Actions

Also available in: PDF Atom