Emissary Ingress — Kubernetes-Native API Gateway on Envoy
Emissary Ingress is an open-source Kubernetes API gateway built on Envoy Proxy, providing rate limiting, authentication, and traffic management for microservices.
What it is
Emissary Ingress (formerly Ambassador API Gateway) is a Kubernetes-native API gateway built on top of Envoy Proxy. It uses Custom Resource Definitions (CRDs) to configure routing, rate limiting, TLS termination, and authentication without restarting the proxy.
Emissary is designed for teams running microservices on Kubernetes who need a developer-friendly, GitOps-compatible ingress layer. It handles HTTP and gRPC traffic routing, canary releases, and traffic shifting through declarative Kubernetes manifests.
How it saves time or tokens
Emissary eliminates the complexity of manually configuring Envoy Proxy. Instead of writing Envoy YAML configurations and managing hot-reloading, you declare routing rules as Kubernetes CRDs. Changes apply automatically without proxy restarts. The Mapping CRD maps URL paths to services in a single resource definition, replacing the multi-file Ingress + Service + upstream configuration pattern. Integration with cert-manager provides automatic TLS certificate provisioning and renewal.
How to use
- Install Emissary Ingress via Helm:
helm repo add datawire https://app.getambassador.io
helm install emissary datawire/emissary-ingress \
-n emissary --create-namespace
- Create a Mapping to route traffic to your service:
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
name: my-service
spec:
hostname: 'api.example.com'
prefix: /api/
service: my-service:8080
- Apply the mapping and verify traffic routing:
kubectl apply -f mapping.yaml
kubectl get mappings
Example
Configuring rate limiting and authentication for an API endpoint:
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
name: protected-api
spec:
hostname: 'api.example.com'
prefix: /api/v1/
service: backend-api:8080
labels:
ambassador:
- request_label_group:
- api-rate-limit:
header: 'Authorization'
---
apiVersion: getambassador.io/v3alpha1
kind: RateLimitService
metadata:
name: rate-limit
spec:
service: rate-limit-service:8081
protocol_version: v3
Related on TokRepo
- DevOps tools — More Kubernetes and infrastructure tools on TokRepo.
- AI gateway providers — Compare API gateway solutions for AI and microservices.
Common pitfalls
- Forgetting to create a Host CRD alongside Mappings causes TLS to not work. Define Host resources with your domain and TLS configuration before creating Mappings.
- Using prefix-based routing without trailing slashes can match unintended paths. Be explicit with prefix values and use regex_prefix for complex matching.
- Not setting resource limits on the Emissary pods leads to Envoy consuming excessive memory under high traffic. Always configure CPU and memory limits in the Helm values.
Frequently Asked Questions
Emissary uses Envoy Proxy as its data plane, providing native gRPC support, circuit breaking, and distributed tracing. It configures routing via CRDs (Mapping, Host) rather than annotations on Ingress resources, which scales better for complex configurations.
Yes. You can define multiple Mappings for the same prefix with different services and weight them. Emissary splits traffic according to the weights, enabling progressive rollouts and A/B testing.
Emissary integrates with external authentication services for OAuth2, JWT validation, and API key checks. It sends authentication requests to your auth service via the FilterPolicy and AuthService CRDs.
Yes. Envoy natively supports HTTP/2 and gRPC. Emissary routes gRPC traffic using the same Mapping CRD with the grpc: true flag. Load balancing and retries work for gRPC calls.
Emissary is a CNCF incubating project with years of production use. It is maintained by Ambassador Labs and used by organizations running microservices on Kubernetes at scale.
Citations (3)
- Emissary GitHub— Emissary Ingress is a Kubernetes-native API gateway on Envoy
- Envoy Documentation— Envoy Proxy architecture and features
- CNCF Landscape— CNCF project governance and incubation
Related on TokRepo
Discussion
Related Assets
Conda — Cross-Platform Package and Environment Manager
Install, update, and manage packages and isolated environments for Python, R, C/C++, and hundreds of other languages from a single tool.
Sphinx — Python Documentation Generator
Generate professional documentation from reStructuredText and Markdown with cross-references, API autodoc, and multiple output formats.
Neutralinojs — Lightweight Cross-Platform Desktop Apps
Build desktop applications with HTML, CSS, and JavaScript using a tiny native runtime instead of bundling Chromium.