Aller au contenu principal

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​

  1. Ingress Resource: Définit les règles de routage
  2. 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​

  1. NGINX Ingress Controller

    • Le plus populaire
    • Performant
    • Beaucoup de fonctionnalités
  2. Traefik

    • Simple et moderne
    • Auto-configuration
    • Dashboard intégré
  3. HAProxy Ingress

    • Très performant
    • Configuration avancée
  4. 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