Chapitre 8.1 - Introduction à Ingress
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre ce qu'est Ingress et pourquoi l'utiliser
- Distinguer Ingress des autres méthodes d'exposition
- Comprendre l'architecture Ingress
- Identifier les cas d'usage appropriés
- Comprendre les avantages et limitations
Introduction
Exposer des applications dans Kubernetes peut se faire de plusieurs façons. Ingress est la méthode recommandée pour exposer des services HTTP/HTTPS depuis l'extérieur du cluster.
Qu'est-ce qu'Ingress?
Ingress expose les Services HTTP et HTTPS depuis l'extérieur du cluster vers les services à l'intérieur du cluster. Il fournit:
- Routage basé sur le hostname ou le chemin
- Termination TLS/SSL
- Load balancing
- Un seul point d'entrée pour plusieurs services
Architecture Ingress
Composants
- Ingress Resource: Définit les règles de routage
- Ingress Controller: Pod qui implémente les règles (NGINX, Traefik, etc.)
Comparaison des Méthodes
NodePort
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
Avantages:
- Simple
- Pas de dépendance externe
Inconvénients:
- Ports élevés (30000-32767)
- Pas de routage par hostname
- Pas de TLS intégré
- Un port par service
LoadBalancer
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: LoadBalancer
ports:
- port: 80
Avantages:
- IP externe dédiée
- Intégration cloud native
Inconvénients:
- Coût (un LB par service)
- Pas de routage par hostname
- Pas de TLS intégré
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
backend:
service:
name: web-service
port:
number: 80
Avantages:
- Routage par hostname/path
- TLS intégré
- Un seul point d'entrée
- Économique (un LB pour plusieurs services)
Inconvénients:
- Nécessite un Ingress Controller
- HTTP/HTTPS seulement
Cas d'Usage
1. Multi-Domaines
Exposer plusieurs domaines avec un seul LoadBalancer:
2. Path-Based Routing
Routage basé sur le chemin:
example.com/api → Service API
example.com/web → Service Web
example.com/admin → Service Admin
3. TLS/SSL Termination
Gestion centralisée des certificats SSL/TLS.
4. Load Balancing
Répartition de charge entre plusieurs instances.
Exemple Basique
Étape 1: Service
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
Étape 2: Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
Résultat: example.com route vers web-service.
Ingress Controllers
Un Ingress Controller est un Pod qui surveille les ressources Ingress et configure un load balancer.
Contrôleurs Populaires
-
NGINX Ingress Controller
- Le plus populaire
- Performant
- Beaucoup de fonctionnalités
-
Traefik
- Simple et moderne
- Auto-configuration
- Dashboard intégré
-
HAProxy Ingress
- Très performant
- Configuration avancée
-
Istio Gateway
- Pour service mesh
- Fonctionnalités avancées
Avantages d'Ingress
1. Économique
Un seul LoadBalancer pour plusieurs services:
2. Routage Avancé
- Par hostname
- Par chemin
- Par headers
- Rewrites et redirects
3. TLS Centralisé
Gestion des certificats au niveau Ingress.
4. Flexibilité
Configuration déclarative avec YAML.
Limitations
1. HTTP/HTTPS Seulement
Ingress supporte seulement HTTP et HTTPS. Pour TCP/UDP, utilisez NodePort ou LoadBalancer.
2. Nécessite un Controller
Un Ingress Controller doit être installé dans le cluster.
3. Dépendance Externe
Pour l'accès externe, un LoadBalancer ou NodePort est toujours nécessaire.
Résumé
Dans ce chapitre, vous avez appris:
Ingress: Exposition HTTP/HTTPS avec routage avancé
Architecture: Ingress Resource + Ingress Controller
Avantages: Routage par hostname/path, TLS, économique
Comparaison: Meilleur que NodePort/LoadBalancer pour HTTP
Cas d'usage: Multi-domaines, path-based routing, TLS
Limitations: HTTP/HTTPS seulement, nécessite un controller
Ingress Controllers: NGINX, Traefik, HAProxy, Istio
Prochaines Étapes
Chapitre 8.2: Ingress Controller (Installation et Configuration)
Chapitre 8.3: Routage et TLS
Chapitre créé le: Décembre 2024