Introduction
Easegress is a traffic orchestration system designed for cloud-native environments. It handles API gateway routing, load balancing, canary releases, and request transformation through composable filter pipelines, all managed via a declarative YAML-based configuration.
What Easegress Does
- Routes and load-balances HTTP/HTTPS traffic with weighted backends and health checks
- Processes requests through composable filter pipelines (rate limiting, auth, transformation)
- Orchestrates traffic patterns like canary deployment, blue-green, and A/B testing
- Runs as a standalone gateway, Kubernetes ingress controller, or service mesh sidecar
- Provides a distributed architecture with Raft consensus for high availability
Architecture Overview
Easegress uses a pipeline model where incoming requests flow through a chain of filters. Each filter performs a specific function: routing, rate limiting, JWT validation, request rewriting, or response caching. The control plane uses an embedded etcd with Raft consensus for cluster coordination. Configuration is managed declaratively through egctl or the REST admin API.
Self-Hosting & Configuration
- Single binary installation with no external dependencies for standalone mode
- Kubernetes deployment via Helm chart for ingress controller or sidecar mode
- Configuration is declarative YAML applied through
egctlCLI or REST API - Built-in service discovery integrates with Eureka, Consul, Nacos, and Kubernetes DNS
- TLS termination with automatic certificate management via ACME/Let's Encrypt
Key Features
- Pipeline-based request processing with 30+ built-in filters for common traffic patterns
- Built-in resilience with circuit breaker, rate limiter, retry, and timeout policies
- Raft-based clustering for high availability without external coordination services
- WebAssembly plugin support for extending pipeline logic with custom filters
- Multi-protocol support including HTTP, HTTPS, gRPC, MQTT, and WebSocket
Comparison with Similar Tools
- Nginx — Static config-driven reverse proxy; Easegress provides dynamic pipelines and a REST API for real-time changes
- Kong — Lua plugin ecosystem; Easegress uses Go and WebAssembly for higher performance extensions
- Envoy — Low-level proxy often paired with Istio; Easegress bundles traffic management into a simpler standalone package
- Traefik — Strong auto-discovery but limited pipeline composition; Easegress offers deeper request processing chains
- APISIX — Similar feature set; Easegress differentiates with Raft-based clustering and WebAssembly plugin support
FAQ
Q: Can Easegress replace Nginx as a reverse proxy? A: Yes. Easegress handles reverse proxying, load balancing, and TLS termination with the added benefit of dynamic configuration and composable pipelines.
Q: Does Easegress support Kubernetes ingress? A: Yes. Easegress can run as a Kubernetes Ingress Controller, reading Ingress resources and Gateway API configurations.
Q: How does Easegress achieve high availability? A: Easegress nodes form a Raft cluster that replicates configuration and state. If a node fails, remaining nodes continue serving traffic.
Q: Can I write custom filters? A: Yes. Custom filters can be written in Go as compiled plugins or in any language that compiles to WebAssembly.