explaingit

emissary-ingress/emissary

4,503PythonAudience · ops devopsComplexity · 4/5Setup · hard

TLDR

An open-source Kubernetes API gateway that controls how outside traffic reaches your services, with load balancing, TLS termination, rate limiting, and canary releases built in.

Mindmap

mindmap
  root((emissary))
    What It Does
      API gateway
      Kubernetes traffic control
    Key Features
      Load balancing
      TLS termination
      Rate limiting
    Integrations
      Prometheus and Grafana
      Consul and Istio
      Datadog
    Use Cases
      Canary deployments
      Auth enforcement
      gRPC routing
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Route external HTTP and gRPC traffic to the correct backend services running inside a Kubernetes cluster using CRD configuration.

USE CASE 2

Set up rate limiting and authentication checks at the gateway level so individual services do not need to implement them separately.

USE CASE 3

Run a canary deployment by sending a small percentage of production traffic to a new service version before rolling it out fully.

USE CASE 4

Configure TLS termination at the gateway so backend services communicate over plain HTTP internally.

Tech stack

PythonGoKubernetesEnvoy ProxyDockerHelm

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a running Kubernetes cluster and familiarity with CRD configuration and Envoy Proxy concepts.

In plain English

Emissary-ingress is an open-source API gateway designed to run inside a Kubernetes cluster. Kubernetes is a system for running many software services together on shared servers, and an API gateway is the front door that controls how traffic from the outside world gets routed to those services. Emissary is a CNCF incubating project, which means it's part of the same foundation that governs Kubernetes itself. It was formerly called Ambassador API Gateway. Under the hood, Emissary uses Envoy Proxy to handle the actual routing of network traffic. You configure it by writing Kubernetes configuration files using a format called CRDs (custom resource definitions), or by adding annotations to existing service definitions. This keeps the gateway's configuration close to the rest of your infrastructure rather than in a separate tool. The feature set covers the main concerns of running a production API: load balancing across multiple backend instances, support for standard protocols including gRPC, HTTP/2, TCP, and WebSockets, TLS termination, authentication hooks, rate limiting, sticky sessions, circuit breaking, and canary releases (which let you send a small percentage of traffic to a new version before rolling it out fully). It also connects to monitoring tools like Grafana, Prometheus, and Datadog, and can integrate with service meshes including Consul, Linkerd, and Istio. The README notes that the original parent company has stepped back from direct involvement in the project, so the community now drives development. The active development branch is called main, older release branches are frozen. Building requires running a make command that uses a tool called goreleaser to produce container images. For non-technical readers: this is infrastructure software for engineering teams managing cloud-hosted applications. It is not a tool for individual developers or end users. The quickstart documentation and the CNCF Slack channel are the recommended starting points for anyone looking to contribute or get help.

Copy-paste prompts

Prompt 1
Write a Kubernetes CRD manifest for Emissary-ingress that routes requests to /api/v1/ to a backend service called api-service on port 8080 with TLS termination.
Prompt 2
How do I configure Emissary-ingress to enforce JWT authentication on all routes under /protected/ using a custom auth service?
Prompt 3
Show me a canary release configuration in Emissary-ingress that sends 10 percent of traffic to a new service version and 90 percent to the stable version.
Prompt 4
Walk me through connecting Emissary-ingress to Prometheus and Grafana to monitor request latency and error rates in a Kubernetes cluster.
Open on GitHub → Explain another repo

← emissary-ingress on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.