Apache APISIX

Schéma en deux colonnes : le plan de données et ses plugins (auth, rate limit, logging) à gauche, l'Admin API qui écrit dans trois nœuds etcd à droite.

Passerelle API sur NGINX, configuration tirée d'etcd

Apache APISIX est une passerelle API : placée devant des services, elle route les requêtes, authentifie les appelants, limite le débit et exporte métriques et traces. Elle tourne sur NGINX et OpenResty, ses plugins sont écrits en Lua, et elle lit sa configuration dans etcd, si bien qu'une route modifiée par l'Admin API s'applique sans redémarrage. Le même moteur sert d'Ingress Kubernetes ou de passerelle vers des LLM.

Plugins chargés à chaud et protocoles hors HTTP

  • Configuration modifiable à chaud : routes, upstreams, certificats TLS et plugins changent sans redémarrage, et une opération peut être annulée.
  • Routage sur toute variable NGINX, cookie ou paramètre d'URL, avec des opérateurs ({"arg_age", ">", 24}) et des priorités. Le plugin traffic-split envoie une part du trafic vers un autre upstream, selon un poids ou une condition.
  • Protocoles au-delà de HTTP : TCP et UDP, gRPC (avec transcodage depuis HTTP/JSON), WebSocket, Dubbo, HTTP/3 sur QUIC, et MQTT 3.1 ou 5.0 réparti par client_id.
  • Plus de cent plugins, selon le site du projet : JWT, OpenID Connect, autorisations déléguées à Keycloak, limites de débit, CORS, CSRF. Côté observabilité, métriques Prometheus, traces OpenTelemetry ou SkyWalking, journaux vers Kafka, Elasticsearch ou Loki.
  • Accès aux LLM : ai-proxy-multi répartit les appels entre OpenAI, Anthropic, Gemini ou toute API compatible OpenAI, avec reprises et bascule, et ai-rate-limiting plafonne les tokens consommés. Depuis la 3.19.0, openapi-to-mcp lit la description OpenAPI d'une API HTTP et en tire un outil MCP par opération.
  • Interface web intégrée depuis la 3.13.0, active par défaut sur le port de l'Admin API (:9180/ui/).

Un cluster etcd à opérer, des ruptures à chaque version mineure

Hors mode standalone, chaque nœud dépend d'etcd. Le guide d'installation réserve l'etcd du chart Helm aux essais et demande en production un etcd externe, à version figée, avec authentification, TLS et sauvegardes. Le mode standalone s'en passe : il charge une configuration complète en YAML ou en JSON, dont le fichier est vérifié chaque seconde, sur un nœud en rôle data plane. Sa variante pilotée par API est conçue pour l'Ingress Controller, et la documentation déconseille de s'en servir sans en connaître le fonctionnement interne.

En production, le guide d'installation ne cite que Linux. Il demande aussi de remplacer la clé d'Admin API de l'exemple, de restreindre allow_admin, et rappelle que les plugins de limitation de débit ne protègent pas l'Admin API.

Le projet se réclame de Kong et vise les microservices. Le README cite Kong et Orange comme inspirations, et oppose APISIX aux passerelles « traditionnelles » sur le routage dynamique et le rechargement des plugins à chaud, qu'il juge adaptés à une architecture microservices.

Les plugins en Go, Java ou Python tournent dans un processus à part, relié à APISIX par RPC local. Le runner Go n'a rien publié depuis la v0.5.0 du 7 novembre 2022, le runner Python depuis la 0.2.0 du 4 mars 2022 ; le runner Java en est à la 0.6.0 du 12 avril 2025. Le README qualifie d'expérimentale la voie WebAssembly.

La 3.19.0, sortie le 28 septembre 2026, est la cinquième version mineure de l'année. Le CHANGELOG y marque onze changements incompatibles, quatorze dans la 3.18.0 et onze dans la 3.17.0. Exemple dans la 3.19.0 : upstream.tls.verify vaut désormais pour les upstreams https et grpcs, et un upstream déjà réglé sur verify: true rejette tout certificat qu'il ne sait pas valider. La page de téléchargement ne désigne aucune version LTS ; la dernière maintenance LTS listée au CHANGELOG est la 3.2.1.