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