RousselTMLEARNING

Proxy & réseau

Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)

Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD IngressRoute et Middleware, ou la Gateway API ; certificats, haute disponibilité et bonnes pratiques.

1. Installer avec Helm #

Le chart officiel.

Installation #

Traefik Ingress Controller
Traefik lit les objets de routage dans l'API Kubernetes et route le trafic vers les Services.
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,svc

Trois façons de déclarer une route #

ObjetAvantagesLimites
Ingress (standard)Portable entre contrôleursPeu expressif ; options par annotations
IngressRoute (CRD Traefik)Toutes les fonctions de Traefik, middlewares natifsSpé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 PodDisruptionBudget et 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: Local pour 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/

Articles liés

Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…)

Les middlewares Traefik modifient les requêtes et réponses entre le routeur et le service : authentification …

Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)

Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, Swarm, Kuber…

Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques

Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses applications ave…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !