Ingress et Ingress Controllers
Les Services de type LoadBalancer provisionné un load balancer par service — coûteux et peu pratique. L'Ingress est l'abstraction qui permet de router plusieurs services HTTP/HTTPS via un seul point d'entrée, avec des règles basées sur l'hôte et le chemin. L'Ingress Controller est le composant qui implémente ces règles.
Ressource Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: nginx # Sélectionne le controller
tls:
- hosts:
- app.example.com
secretName: app-tls # Secret TLS (géré par cert-manager)
rules:
- host: app.example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80Ingress Controller NGINX
Le plus répandu. Maintenu par la communauté Kubernetes (kubernetes/ingress-nginx, différent de nginx-ingress de F5). Il déploie un pod NGINX qui lit les ressources Ingress et reconfigure NGINX dynamiquement.
# Installation avec Helm
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --create-namespace --set controller.service.type=LoadBalancer
# Vérifier
kubectl get ingressclass
kubectl get ingress -A
kubectl describe ingress web-ingressTraefik
Alternative populaire, surtout dans les clusters k3s (installé par défaut). Découverte automatique des services via les labels. Support natif de Let's Encrypt. Configuration via CRDs (IngressRoute) ou annotations Ingress standard.
helm install traefik traefik/traefik --namespace traefik --create-namespacecert-manager et TLS automatique
cert-manager automatise la gestion des certificats TLS (Let's Encrypt, Vault, auto-signé). Il surveille les ressources Ingress annotées et crée les certificats correspondants.
# Installer cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set crds.enabled=true
# ClusterIssuer Let's Encrypt
kubectl apply -f - <Gateway API (v1.35)
Gateway API est le successeur de l'Ingress, promu en GA avec Kubernetes 1.31. Il offre une expressivité supérieure (routage L4/L7, TLS passthrough, canary, header-based routing) et une meilleure séparation des responsabilités entre infra et développeurs. Les controllers majeurs (nginx, Traefik, Cilium, Istio) l'implémentent. C'est la direction à suivre pour les nouveaux projets.