MCPcopy Index your code
hub / github.com/emissary-ingress/emissary

github.com/emissary-ingress/emissary @chart-v7.2.0 sqlite

repository ↗ · DeepWiki ↗ · release chart-v7.2.0 ↗
44,526 symbols 91,060 edges 1,553 files 19,618 documented · 44%
README

Emissary-ingress

Docker Repository Docker Pulls [Join Slack]slack-url

CII Best Practices


Emissary-Ingress is an open-source Kubernetes-native API Gateway + Layer 7 load balancer + Kubernetes Ingress built on Envoy Proxy. Emissary-ingress is an 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.

Architecture

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. For more on Emissary's architecture and motivation, read this blog post.

Getting Started

You can get Emissary up and running in just three steps. Follow the instructions here: https://www.getambassador.io/docs/emissary/latest/tutorials/getting-started/

If you are looking for a Kubernetes ingress controller, Emissary provides a superset of the functionality of a typical ingress controller. (It does the traditional routing, and layers on a raft of configuration options.) This blog post covers Kubernetes ingress.

For other common questions, view this FAQ page.

You can also use Helm to install Emissary. For more information, see the instructions in the Helm installation documentation

Community

Emissary-ingress is a CNCF Incubating project, and welcomes any and all contributors. To get started:

If you're interested in contributing, here are some ways:

The Ambassador Edge Stack is a superset of Emissary-ingress that provides additional functionality including OAuth/OpenID Connect, advanced rate limiting, Swagger/OpenAPI support, integrated ACME support for automatic TLS certificate management, and a cloud-based UI. For more information, visit https://www.getambassador.io/editions/.

Extension points exported contracts — how you extend this code

Cache (Interface)
Cache is a generic config cache with a watcher. [6 implementers]
pkg/envoy-control-plane/cache/v2/cache.go
Validatable (Interface)
Not sure if there is a better way to do this, but we cast to this so we can call the generated Validate method. [1761 …
cmd/ambex/main.go
Service (Interface)
Service defines a KAT backend service interface. [12 implementers]
cmd/kat-server/services/service.go
APIDocsHTTPClient (Interface)
(no doc) [7 implementers]
pkg/agent/api_docs.go
Watcher (Interface)
(no doc) [15 implementers]
cmd/entrypoint/consul.go
Limiter (Interface)
A limiter can be used to rate limit and/or coalesce a series of time-based events. This interface captures the logic of [3 …
pkg/limiter/limiter.go
VisitSchemaFunc (FuncType)
VisitSchemaFunc is a callback to be passed to VisitAllSchemaProps. As a special case, if the returned error is ErrExclu
tools/src/fix-crds/system.go
Notice (Interface)
Notice is a notice that should be displayed to the user. I have no idea what the schema for Notice is, there are none c
pkg/metriton/protocol.go

Core symbols most depended-on inside this repo

Validate
called by 3225
cmd/ambex/main.go
get
called by 1117
python/kat/parser.py
Errorf
called by 510
pkg/envoy-control-plane/log/log.go
format
called by 371
python/kat/harness.py
append
called by 293
python/kat/parser.py
Printf
called by 158
cmd/reproducer/extract.go
post_error
called by 157
python/ambassador/ir/ir.py
write
called by 119
releng/lib/uiutil.py

Shape

Method 34,085
Struct 5,777
Function 3,321
Interface 660
Class 380
TypeAlias 257
Route 29
FuncType 17

Languages

Go94%
Python6%
TypeScript1%

Modules by API surface

pkg/api/envoy/config/route/v3/route_components.pb.go703 symbols
pkg/api/envoy/config/route/v4alpha/route_components.pb.go677 symbols
pkg/api/envoy/api/v2/route/route_components.pb.go577 symbols
pkg/api/envoy/config/route/v4alpha/route_components.pb.validate.go384 symbols
pkg/api/envoy/config/route/v3/route_components.pb.validate.go384 symbols
pkg/api/envoy/config/cluster/v3/cluster.pb.go310 symbols
pkg/api/envoy/config/cluster/v4alpha/cluster.pb.go306 symbols
pkg/api/envoy/api/v2/route/route_components.pb.validate.go304 symbols
pkg/api/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.pb.go272 symbols
pkg/api/getambassador.io/v2/zz_generated.conversion.go270 symbols
pkg/api/envoy/api/v2/cluster.pb.go270 symbols
pkg/api/envoy/extensions/filters/network/http_connection_manager/v4alpha/http_connection_manager.pb.go268 symbols

Dependencies from manifests, versioned

4d63.com/gochecknoglobalsv0.1.0 · 1×
cloud.google.com/gov0.54.0 · 1×
github.com/Antonboom/errnamev0.1.5 · 1×
github.com/Antonboom/nilnilv0.1.0 · 1×
github.com/Azure/go-ansitermv0.0.0-2017092923402 · 1×
github.com/Azure/go-autorestv14.2.0+incompatible · 1×
github.com/Azure/go-autorest/autorestv0.11.1 · 1×
github.com/Azure/go-autorest/autorest/adalv0.9.5 · 1×
github.com/Azure/go-autorest/autorest/datev0.3.0 · 1×
github.com/Azure/go-autorest/loggerv0.2.0 · 1×
github.com/Azure/go-autorest/tracingv0.6.0 · 1×

For agents

$ claude mcp add emissary \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact