Kubernetes · Ingress

Ingress

Routez le trafic HTTP/HTTPS vers des Services avec une ressource Ingress et un contrôleur adapté.

Leçon disponible
20 min

Objectifs

  • Distinguer la ressource Ingress de l’Ingress Controller.
  • Comprendre les règles host, path et pathType.
  • Relier un backend Ingress à un Service.
  • Identifier le rôle du TLS et de l’IngressClass.

Exposer HTTP et HTTPS avec Ingress

Ingress décrit des règles de routage HTTP et HTTPS vers des Services. Une règle peut sélectionner un host, un chemin et un backend sans exposer directement chaque Service par un LoadBalancer distinct.

La ressource déclarative ne traite aucun paquet seule : un Ingress Controller compatible doit être installé, observer la classe concernée et configurer un proxy ou load balancer.

Du client au Pod

Le client joint l’adresse exposée par le contrôleur. Celui-ci choisit une règle selon le host et le path, puis transmet au Service, qui sélectionne enfin des Pods prêts.

Flux HTTP/HTTPS
Client → Ingress Controller → Service → Pod

Manifeste Ingress networking.k8s.io/v1

ingressClassName sélectionne une IngressClass. pathType Prefix fait correspondre le préfixe de chemin selon les règles Kubernetes. Le backend référence un Service et son port.

ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80

La classe nginx doit exister et correspondre au contrôleur installé. Les annotations et capacités avancées varient selon les implémentations.

TLS, host et certificats

La section spec.tls associe des hosts à un Secret TLS. Le certificat, le DNS et l’adresse externe du contrôleur doivent être cohérents. Un gestionnaire de certificats peut automatiser l’émission selon l’architecture.

  • host sélectionne le nom HTTP demandé par le client.
  • path sélectionne une route à l’intérieur de ce host.
  • TLS chiffre la connexion jusqu’au point de terminaison configuré par le contrôleur.

Observer la ressource

get affiche les Ingress et leurs adresses connues. describe montre règles, backends et événements. Consultez aussi les logs du contrôleur lorsque la ressource semble valide mais n’est pas appliquée.

Lister et décrire l’Ingress
kubectl get ingress
kubectl describe ingress app-ingress

Bonnes pratiques

Spécifiez une classe connue, automatisez la gestion des certificats lorsque possible et testez séparément DNS, contrôleur, règle, Service et Pods.

  • Utiliser l’API networking.k8s.io/v1 et déclarer pathType.
  • Limiter les annotations aux fonctionnalités documentées par le contrôleur.
  • Vérifier le Service backend avant de diagnostiquer l’Ingress.

Mini résumé

  • Ingress décrit du routage HTTP/HTTPS vers des Services.
  • Un Ingress Controller est indispensable pour appliquer ces règles.
  • host, path et pathType déterminent la correspondance des requêtes.
  • TLS, DNS, classe, Service et Pods doivent être cohérents de bout en bout.

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Pourquoi un objet Ingress seul ne rend-il généralement pas l’application accessible ?
2. Quelle ressource l’Ingress référence-t-il comme backend dans l’exemple ?
3. Pourquoi pathType est-il présent avec networking.k8s.io/v1 ?