Que fait Expert Passerelle API & Proxy Inverse ?
Configurez et optimisez les passerelles API et les proxys inverses pour le routage, l'authentification, la limitation de débit et la gestion du trafic.
Points de Décision
Sélection de la Stratégie d'Authentification
Modèle de trafic & Exigences
├── Services internes uniquement
│ └── Authentification par Clé API
│ ├── Faible complexité, validation rapide
│ └── Kong : plugin key-auth, Traefik : forwardAuth
├── API orientée client avec besoins de session
│ └── Authentification JWT
│ ├── Sans état, inclut les revendications utilisateur
│ └── Kong : plugin jwt, Nginx : lua-resty-jwt
├── Intégration B2B entreprise
│ └── Authentification mTLS
│ ├── Basée sur certificats, sécurité maximale
│ └── Kong : mtls-auth, Nginx : ssl_verify_client
└── Intégration SaaS tierce
└── Flux OAuth2
├── Échange de jetons, délégation d'authentification
└── Kong : plugin oauth2, AWS API Gateway : authorizer
Sélection de la Technologie de Passerelle
Exigences → Choix
├── Écosystème de plugins & IHM nécessaire
│ └── Kong Enterprise/OSS
├── Natif Kubernetes avec auto-découverte
│ └── Traefik v3 ou Ingress-NGINX
├── Performances maximales, fonctionnalités minimales
│ └── Nginx ou Envoy
└── Géré dans le cloud, mise à l'échelle serverless
└── AWS API Gateway ou Azure Application Gateway
Stratégie de Routage Amont
Architecture du service → Méthode de routage
├── Microservices avec découverte de services
│ └── Cibles amont dynamiques
│ ├── Intégration Consul/Eureka
│ └── Équilibrage de charge basé sur les health checks
├── Services backend statiques
│ └── Pools amont fixes
│ ├── Round-robin ou moindre connexions
│ └── Routage pondéré pour déploiements canary
└── Déploiement multi-région
└── Routage géographique
├── Basé sur la latence ou geo-IP
└── Réplication vers régions secondaires
Modes de Défaillance
Cascade de Timeout de la Passerelle
Symptôme : Réponses API lentes (>10s) sous charge
Détection : Les temps de réponse grimpent alors que les services amont signalent une latence normale
Cause racine : Le timeout de la passerelle est plus élevé que le timeout amont, provoquant une mise en file d'attente des requêtes
Correctif : Définir le timeout de lecture de la passerelle < timeout amont (passerelle : 30s, amont : 25s)
Contournement de l'Authentification
Symptôme : Requêtes non autorisées atteignant les services backend
Détection : Les journaux backend montrent des requêtes sans les en-têtes d'authentification attendus
Cause racine : L'ordre des routes permet à des règles permissives de s'appliquer avant les règles d'authentification
Correctif : Déplacer le middleware d'authentification au niveau global ou s'assurer que les routes spécifiques viennent en premier dans la configuration
Instantanéité du Circuit Breaker
Symptôme : Erreurs 503 intermittentes lors des pics de trafic
Détection : Le circuit breaker s'ouvre/se ferme rapidement (plusieurs fois par minute)
Cause racine : Seuil trop sensible ou health check mal configuré
Correctif : Ajuster le seuil d'échec (5+ échecs) et le temps de récupération (30s minimum)
Expiration du Certificat SSL
Symptôme : Échecs de handshake HTTPS, avertissements de certificat dans le navigateur
Détection : La vérification du certificat SSL montre une expiration dans les 30 jours
Cause racine : Gestion manuelle des certificats sans automatisation du renouvellement
Correctif : Implémenter cert-manager (K8s) ou un client ACME avec renouvellement automatique
Épuisement des Ressources
Symptôme : La passerelle cesse d'accepter les connexions, mémoire/CPU à 100%
Détection : Erreurs de connexion refusée, échecs des health checks de la passerelle
Cause racine : Absence de limites de connexion ou fuites mémoire dans les plugins
Correctif : Définir worker_connections (Nginx) ou les limites du pool de connexions (Kong), redémarrer la passerelle
Exemples Concrets
Scénario : Configuration d'une Passerelle API pour E-commerce
Contexte : Déployer Kong pour des microservices gérant les commandes, l'inventaire, les paiements avec authentification JWT
Étape 1 : Définition des Routes
# Identifier d'abord les points de terminaison des services
services:
- orders: /api/v1/orders/* → http://orders:8080
- inventory: /api/v1/inventory/* → http://inventory:8080
- payments: /api/v1/payments/* → http://payments:8080
Étape 2 : Application de l'Arbre de Décision
- Modèle de trafic : API orientée client → Authentification JWT
- Architecture : Microservices → Cibles amont dynamiques
- Exigences : Écosystème de plugins nécessaire → Kong sélectionné
Étape 3 : Ordre des Plugins
# Appliquer les plugins dans le bon ordre
plugins:
1. cors (pré-authentification)
2. jwt (authentification)
3. rate-limiting (post-authentification)
4. request-transformer (dernier)
Expert vs Débutant :
- Erreur débutant : Applique la limitation de débit avant l'authentification (les utilisateurs anonymes consomment le quota)
- Approche experte : Authentification d'abord, puis limitation de débit par utilisateur authentifié
- Erreur débutant : Utilise une politique CORS globale
- Approche experte : CORS différent par route (orders autorise les origines admin, payments restreint au frontend uniquement)
Scénario d'Échec : Déploiement Canary Mal Exécuté
Situation : Déploiement de 20% du trafic vers une nouvelle version du service de commandes, avec des erreurs 500
Processus de Détection :
- Vérifier les métriques de la passerelle : le pic d'erreurs 500 corrèle avec l'heure du déploiement
- Health checks amont : la nouvelle version échoue aux health checks
- Journaux de la passerelle : timeouts de connexion amont
Procédure de Retour Arrière :
# Étape 1 : Redirection immédiate du trafic
kong:
routes:
- service: orders-v1
weight: 100 # Était 80
- service: orders-v2
weight: 0 # Était 20
# Étape 2 : Valider le retour arrière
curl -H "Authorization: Bearer $JWT" \
https://api.company.com/orders/health
# Étape 3 : Supprimer l'amont défaillant
kubectl scale deployment orders-v2 --replicas=0
Analyse de la Cause Racine : La nouvelle version avait une mauvaise configuration du pool de connexions à la base de données, provoquant des timeouts sous charge
Portes de Qualité
- Toutes les routes ont une correspondance de chemin explicite (pas de route globale /*)
- Middleware d'authentification configuré avant les plugins de logique métier
- Les health checks retournent 2xx pour les amonts sains en moins de 5 secondes
- Seuils du circuit breaker définis : 5 échecs dans une fenêtre de 60s, 30s de récupération
- Certificats TLS renouvelés automatiquement avec 30+ jours avant expiration
- Limitation de débit appliquée par utilisateur authentifié, pas globalement
- Politique CORS restreint les origines aux domaines requis uniquement
- Timeout de la passerelle (30s) < timeout amont (25s) pour éviter les cascades
- Les journaux d'accès incluent un ID de corrélation pour le traçage des requêtes
- Passerelle déployée avec au moins 2 réplicas pour la haute disponibilité
Limites (NOT-FOR)
Cette compétence traite : Configuration de la passerelle, règles de routage, middleware d'authentification, configuration du proxy inverse
Ne concerne pas :
- Conception d'algorithmes de limitation de débit → Utiliser
api-rate-limiting-throttling-expert - Configuration du plan de données du service mesh → Utiliser
service-mesh-microservices-expert - Spécification et conception d'API → Utiliser
api-architect - Pool de connexions à la base de données → Utiliser
database-performance-expert - Orchestration de conteneurs → Utiliser
kubernetes-expertoudocker-expert - Génération de certificats SSL → Utiliser
security-infrastructure-expert
Règles de Délégation :
- Pour les algorithmes de limitation de débit personnalisés : "Je vais configurer le plugin de limitation de débit, mais pour les algorithmes personnalisés, utilisez api-rate-limiting-throttling-expert"
- Pour la configuration de la découverte de services : "Je vais configurer les cibles amont, mais pour la configuration du service mesh, utilisez service-mesh-microservices-expert"