Envoy
Proxy open-source haute performance conçu pour les architectures cloud-native et microservices, offrant load balancing, observabilité et sécurité.
Mis à jour le 27 janvier 2026
Envoy est un proxy réseau L7 (couche application) et L4 (couche transport) développé initialement par Lyft, devenu un projet CNCF gradué. Il s'impose comme le composant fondamental des architectures de service mesh modernes, offrant des capacités avancées de routage, de résilience et d'observabilité pour les applications distribuées conteneurisées.
Fondements d'Envoy
- Proxy edge et service mesh conçu pour architectures cloud-native avec support multi-protocole (HTTP/1.1, HTTP/2, gRPC, TCP)
- Architecture out-of-process déployée en sidecar aux côtés de chaque service applicatif
- Configuration dynamique via API xDS (Discovery Service) permettant des mises à jour sans redémarrage
- Écrit en C++ pour des performances optimales avec empreinte mémoire minimale et latence ultra-faible
Avantages stratégiques
- Observabilité native avec métriques détaillées, tracing distribué et logs structurés pour chaque requête
- Résilience avancée via circuit breakers, retries intelligents, timeouts et rate limiting granulaires
- Load balancing sophistiqué avec multiples algorithmes (round-robin, least request, ring hash) et health checking actif
- Sécurité renforcée grâce au TLS mutuel automatique, validation de certificats et contrôle d'accès basé sur l'identité
- Extensibilité par filtres WebAssembly (Wasm) permettant une logique métier personnalisée sans recompilation
Exemple de configuration Envoy
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 10000
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
access_log:
- name: envoy.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
name: local_route
virtual_hosts:
- name: backend
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: service_backend
timeout: 5s
retry_policy:
retry_on: 5xx
num_retries: 3
clusters:
- name: service_backend
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: service_backend
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: backend-service
port_value: 8080
health_checks:
- timeout: 1s
interval: 5s
unhealthy_threshold: 2
healthy_threshold: 2
http_health_check:
path: "/health"Mise en œuvre d'Envoy
- Définir l'architecture de déploiement : edge proxy, sidecar pour service mesh ou API gateway selon les besoins
- Configurer les listeners pour exposer les ports d'écoute et définir les filtres réseau appropriés
- Définir les clusters backend avec les politiques de load balancing, health checks et circuit breakers
- Implémenter les routes avec règles de matching, transformations et politiques de retry/timeout
- Intégrer avec un control plane (Istio, Consul Connect) pour configuration dynamique via xDS APIs
- Configurer l'observabilité en connectant Envoy à Prometheus, Jaeger et votre système de logging centralisé
- Activer le TLS mutuel pour sécuriser les communications inter-services avec rotation automatique des certificats
Conseil d'expert
Utilisez la fonctionnalité de tap filters d'Envoy pour déboguer le trafic en temps réel sans modifier vos services. Combinez-la avec envoy-admin pour inspecter dynamiquement la configuration active et les statistiques détaillées, réduisant drastiquement le temps de résolution d'incidents en production.
Écosystème et intégrations
- Istio : utilise Envoy comme data plane pour implémenter les fonctionnalités de service mesh
- Consul Connect : s'appuie sur Envoy pour la segmentation réseau et l'encryption automatique
- Ambassador/Emissary-ingress : API gateway Kubernetes basé sur Envoy pour le traffic management edge
- Gloo Edge : gateway API-first utilisant Envoy avec transformation de requêtes avancée
- Contour : ingress controller Kubernetes haute performance propulsé par Envoy
- AWS App Mesh : service mesh managé utilisant Envoy comme proxy de données
Envoy s'est imposé comme le standard de facto pour le proxying dans les architectures cloud-native, offrant une base solide pour construire des systèmes distribués résilients et observables. Sa performance exceptionnelle, sa flexibilité via les API xDS, et son écosystème vibrant en font un choix stratégique pour les organisations adoptant les microservices et le service mesh, réduisant la complexité opérationnelle tout en améliorant la fiabilité globale des applications.

