This article is available in French.
1. Installer avec Helm #
Le chart officiel.
Installation #
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm upgrade --install traefik traefik/traefik -n traefik --create-namespace \
--set deployment.replicas=2 \
--set providers.kubernetesGateway.enabled=true
kubectl -n traefik get pods,svcTrois façons de déclarer une route #
| Objet | Avantages | Limites |
|---|---|---|
Ingress (standard) | Portable entre contrôleurs | Peu expressif ; options par annotations |
IngressRoute (CRD Traefik) | Toutes les fonctions de Traefik, middlewares natifs | Spécifique à Traefik |
HTTPRoute (Gateway API) | Standard moderne, rôles séparés (Gateway / Route) | Support des filtres variable selon le contrôleur |
2. Exemples #
IngressRoute et Gateway API.
IngressRoute avec middleware #
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata: { name: securite, namespace: app }
spec:
headers: { stsSeconds: 31536000, contentTypeNosniff: true }
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata: { name: app, namespace: app }
spec:
entryPoints: [websecure]
routes:
- match: Host(`app.exemple.fr`)
kind: Rule
middlewares: [{ name: securite }]
services: [{ name: app, port: 80 }]
tls: { secretName: app-tls }HTTPRoute (Gateway API) #
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata: { name: app, namespace: app }
spec:
parentRefs: [{ name: traefik-gateway, namespace: traefik }]
hostnames: ["app.exemple.fr"]
rules:
- matches: [{ path: { type: PathPrefix, value: /api } }]
backendRefs: [{ name: api, port: 8080 }]3. Production #
Disponibilité, certificats, sécurité.
Règles #
- Au moins deux réplicas, un
PodDisruptionBudgetet une anti-affinité pour les répartir sur plusieurs nœuds. - Certificats : cert-manager qui crée les Secrets TLS ; le résolveur ACME intégré stocke son état dans un fichier, peu adapté à plusieurs réplicas.
externalTrafficPolicy: Localpour conserver l'adresse IP réelle des clients.- Tableau de bord non exposé publiquement ; métriques Prometheus activées.
- Limiter les namespaces surveillés (
providers.kubernetesCRD.namespaces) sur un cluster partagé.
kubectl get ingressroute,middleware -A
kubectl -n traefik logs deploy/traefik --tail=50
kubectl -n traefik port-forward deploy/traefik 9000:9000 # tableau de bord en local : http://localhost:9000/dashboard/My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
Traefik : vue d'ensemble, architecture et premier déploiement
Découvrir Traefik : reverse proxy et load balancer cloud-native, entrypoints, routers, services, ...
Installation de HAProxy
Guide complet pour installer HAProxy sur les serveurs Linux (Debian, RedHat) et via des environne...
Traefik : les logs (journaux applicatifs et access logs)
Configurer les deux journaux de Traefik : le journal de fonctionnement (niveaux, format) et les a...
Traefik : le tracing distribué avec OpenTelemetry
Activer le tracing de Traefik v3 avec OpenTelemetry (OTLP), propager le contexte W3C vers les app...
Stratégies de déploiement avec Traefik : blue/green, canary et rolling
Mettre en œuvre les stratégies de déploiement avec Traefik : rolling update par l'orchestrateur, ...
Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité
Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...
Gestion des certificats SSL/TLS avec Let's Encrypt et ACME
Apprenez à automatiser la génération et le renouvellement de vos certificats SSL/TLS avec Let's E...
Protocole ACME : serveur ACME, challenges http-01 et dns-01, automatisation TLS
Comprendre le protocole ACME : rôle du serveur ACME (Let's Encrypt, ZeroSSL, step-ca), challenges...
Kubernetes : architecture et composants (control plane, nœuds, objets)
Comprendre l'architecture de Kubernetes : API server, etcd, scheduler, controller manager, kubele...