Passer au contenu principal

Réseau (Kubernetes)

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: 80

Ingress 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-ingress

Traefik

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-namespace

cert-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.

Sources