- The Mapping Resource
- Automatic Retries
- Canary Releases
- Circuit Breakers
- Cross-Origin Resource Sharing
- Method-based Routing
- Prefix Regex
- Traffic Shadowing
- Developer Portal
- Edge Policy Console
- The Ambassador Module
- Gzip Compression
- Host CRD, ACME Support, and External Load Balancer Configuration
- Ingress Controller
- Troubleshooting Ambassador
- Custom Filters
- Deploying to Kubernetes from GitHub
- Knative Serverless Framework
- Prometheus monitoring
- Frequently Asked Questions
Alternatives to the Ambassador Edge Stack fall into three basic categories:
- Hosted API gateways, such as the Amazon API gateway.
- Traditional API gateways, such as Kong.
- L7 proxies, such as Traefik, NGINX, HAProxy, or Envoy, or Ingress controllers built on these proxies.
Both hosted API gateways and traditional API gateways are:
- Not self-service. The management interfaces on traditional API gateways are not designed for developer self-service, and provide limited safety and usability for developers.
- Not Kubernetes-native. They're typically configured using REST APIs, making it challenging to adopt cloud-native patterns such as GitOps and declarative configuration.
- Designed for API management, versus microservices.
A Layer 7 proxy can be used as an API gateway, but typically requires additional bespoke development to support microservices use cases. In fact, many API gateways package the additional features needed for an API gateway on top of an L7 proxy. The Ambassador Edge Stack uses Envoy, while Kong uses NGINX. If you're interested in deploying Envoy directly, we've written an introductory tutorial.
Istio is an open-source service mesh, built on Envoy. A service mesh is designed to manage East/West traffic (traffic between servers and your data center), while an API gateway manages North/South traffic (in and out of your data center). Documentation on how to deploy the Ambassador Edge Stack with Istio is here. In general, we've found that North/South traffic is quite different from East/West traffic (i.e., you don't control the client in the North/South use case).