Ingress-NGINX est le contrôleur Ingress le plus répandu dans l’écosystème Kubernetes. Il fait office de Reverse Proxy en s’appuyant sur NGINX pour router le trafic HTTP/HTTPS entrant vers les bons services du cluster.
Rôle dans l’architecture
Sans Ingress, exposer un service nécessite un LoadBalancer par service (coûteux sur cloud) ou un NodePort. L’Ingress centralise tout le trafic entrant sur un seul point d’entrée.
Internet
│
▼
ingress-nginx (pod)
├── /api → Service "api-svc" → Pods API
├── /app → Service "frontend-svc" → Pods Frontend
└── /auth → Service "auth-svc" → Pods Auth
Installation via Helm
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--create-namespaceExemple : Ingress simple (HTTP)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mon-app-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: monapp.exemple.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-svc
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: frontend-svc
port:
number: 80Exemple : Ingress avec TLS (cert-manager)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mon-app-ingress-tls
namespace: default
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
ingressClassName: nginx
tls:
- hosts:
- monapp.exemple.com
secretName: monapp-tls-secret # cert-manager crée ce secret automatiquement
rules:
- host: monapp.exemple.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-svc
port:
number: 80Annotations utiles
| Annotation | Effet |
|---|---|
nginx.ingress.kubernetes.io/rewrite-target: / | Réécriture du chemin avant envoi au backend |
nginx.ingress.kubernetes.io/ssl-redirect: "true" | Force la redirection HTTP → HTTPS |
nginx.ingress.kubernetes.io/proxy-body-size: "50m" | Taille max du body des requêtes |
nginx.ingress.kubernetes.io/rate-limit: "100" | Limite de requêtes par seconde |
nginx.ingress.kubernetes.io/use-regex: "true" | Active les regex dans les paths |
Vérification
# Voir les ingress déployés
kubectl get ingress -A
# Logs du contrôleur
kubectl logs -n ingress-nginx deploy/ingress-nginx-controller
# IP externe du LoadBalancer
kubectl get svc -n ingress-nginxLiens
- cert-manager — pour ajouter le TLS automatique
- Plugins Kubernetes - Vue d’ensemble — vue globale de l’écosystème
- kube-proxy — gestion du réseau au niveau des nœuds
- Reverse Proxy — concept réseau fondamental qu’ingress-nginx implémente