Ingress avec Traefik

Comment fonctionne le routage du trafic dans votre infrastructure

Siovos utilise Traefik comme contrôleur d'ingress pour router le trafic externe vers vos services dans Kubernetes.

Qu'est-ce qu'un contrôleur d'Ingress ?#

Un contrôleur d'ingress agit comme point d'entrée pour le trafic HTTP/HTTPS dans votre cluster. Il :

  • Route les requêtes vers le bon service selon le hostname
  • Termine le SSL/TLS (gère les certificats HTTPS)
  • Peut appliquer des middlewares (rate limiting, authentification, etc.)

Comment fonctionne le routage#

Quand vous créez une ressource Ingress dans Kubernetes, Traefik la détecte automatiquement et configure la route :

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app
  namespace: my-namespace
  annotations:
    cert-manager.io/cluster-issuer: step-ca-issuer
spec:
  ingressClassName: traefik
  tls:
    - hosts:
        - my-app.internal
      secretName: my-app-tls
  rules:
    - host: my-app.internal
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app
                port:
                  number: 80

Points clés :

  • ingressClassName: traefik indique à Kubernetes d'utiliser Traefik
  • L'annotation cert-manager.io/cluster-issuer demande un certificat automatique
  • Le bloc tls active HTTPS avec le certificat généré

Certificats HTTPS automatiques#

Traefik fonctionne avec cert-manager pour fournir du HTTPS automatique à tous vos services. Voir Gestion des certificats pour les détails.

Utiliser IngressRoute de Traefik (Optionnel)#

Pour du routage avancé, Traefik fournit son propre CRD appelé IngressRoute :

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: my-app
  namespace: my-namespace
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`my-app.internal`)
      kind: Rule
      services:
        - name: my-app
          port: 80
  tls:
    secretName: my-app-tls

IngressRoute offre plus de fonctionnalités comme :

  • Load balancing pondéré
  • Routage basé sur les headers
  • Chaînes de middlewares

Middlewares#

Les middlewares Traefik peuvent transformer les requêtes. Cas d'usage courants :

Authentification basique :

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: basic-auth
spec:
  basicAuth:
    secret: auth-secret

Rate Limiting :

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: rate-limit
spec:
  rateLimit:
    average: 100
    burst: 50

Redirection HTTP vers HTTPS :

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: redirect-https
spec:
  redirectScheme:
    scheme: https
    permanent: true

Appliquer un middleware à une IngressRoute :

spec:
  routes:
    - match: Host(`my-app.internal`)
      middlewares:
        - name: basic-auth
        - name: rate-limit

Dépannage#

Route qui ne fonctionne pas#

  1. Vérifiez que votre Ingress/IngressRoute n'a pas d'erreurs : kubectl describe ingress my-app
  2. Assurez-vous que le service backend existe et a des endpoints

Problèmes de certificat#

Voir Dépannage pour les problèmes SSL/TLS.

Erreurs 404#

  • Vérifiez que le host correspond exactement (y compris le suffixe de domaine)
  • Vérifiez que le path correspond aux routes de votre application
  • Assurez-vous que le port du service est correct

Prochaines étapes#

Cette page vous a-t-elle été utile ?