Emissary-Ingress is an open-source Kubernetes-native API Gateway + Layer 7 load balancer + Kubernetes Ingress built on Envoy Proxy. Emissary-ingress is a CNCF incubation project (and was formerly known as Ambassador API Gateway).
Emissary-ingress enables its users to:
- Manage ingress traffic with load balancing, support for multiple protocols (gRPC and HTTP/2, TCP, and web sockets), and Kubernetes integration
- Manage changes to routing with an easy to use declarative policy engine and self-service configuration, via Kubernetes CRDs or annotations
- Secure microservices with authentication, rate limiting, and TLS
- Ensure high availability with sticky sessions, rate limiting, and circuit breaking
- Leverage observability with integrations with Grafana, Prometheus, and Datadog, and comprehensive metrics support
- Enable progressive delivery with canary releases
- Connect service meshes including Consul, Linkerd, and Istio
- Knative serverless integration
See the full list of features here.
(If you are looking at this list on a branch other than main, it
is likely to be wrong.)
-
main: main Emissary-ingress development work (:heavy_check_mark: active development) -
master: frozen branch for Emissary-ingress 3.10 (:heavy_check_mark: frozen) -
release/v2.5: frozen branch for Emissary-ingress 2.5 (:heavy_check_mark: frozen)
gmake images should make all the images you need using
goreleaser. Note that .goreleaser.yaml is a
generated file; do not edit it directly. It's this way so that we
can use the open-source version of goreleaser.
If you want to update the Envoy version, edit the ENVOY_IMAGE value in
the Makefile.
Emissary is configured via Kubernetes CRDs, or via annotations on
Kubernetes Services. Internally, it uses the Envoy Proxy to actually
handle routing data; externally, it relies on Kubernetes for scaling and
resiliency.
The fastest way to get started with Emissary is to follow the Quickstart. For other common questions, check out the Emissary FAQ or the full Emissary documentation.
Emissary-ingress is a CNCF Incubating project and welcomes any and all contributors.
At this point, Emissary's original parent company has stepped back from direct involvement in the project, so the community is now more important than ever. As we've said at the past few KubeCons, Emissary needs you.
The best way to join the community is to join the CNCF Slack and hop
into the #emissary-ingress channel. Checking out [open issues] or
[contributing documentation] are both great ways to get started
contributing.
You can also check out the project's governance documentation:
CODE_OF_CONDUCT.md: the community code of conductGOVERNANCE.md: the governance structureMAINTAINERS.md: the list of maintainersMEETING_SCHEDULE.md: the schedule of community meetings