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.
Client → Ingress Controller → Service → PodManifeste 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.
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: 80La 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.
kubectl get ingress
kubectl describe ingress app-ingressBonnes 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.
Erreur fréquente : créer un Ingress sans contrôleur
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.