Convert Figma logo to code with AI

emissary-ingress logoemissary

open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

4,339
680
4,339
479

Top Related Projects

open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

24,693

Cloud-native high-performance edge/middle/service proxy

35,688

Connect, secure, control, and observe services.

50,061

The Cloud Native Application Proxy

3,695

Contour is a Kubernetes ingress controller using Envoy proxy.

38,788

🦍 The Cloud-Native API Gateway and AI Gateway.

Quick Overview

Emissary-ingress is an open-source Kubernetes-native API Gateway and Layer 7 load balancer built on the Envoy Proxy. It provides a powerful and flexible solution for managing ingress traffic, API management, and service mesh integration in Kubernetes environments.

Pros

  • Highly configurable and extensible, supporting complex routing scenarios
  • Seamless integration with Kubernetes, leveraging Custom Resource Definitions (CRDs)
  • Built on Envoy Proxy, offering high performance and advanced traffic management features
  • Supports modern protocols like gRPC, WebSockets, and HTTP/2

Cons

  • Steeper learning curve compared to simpler ingress controllers
  • Configuration can become complex for large-scale deployments
  • Limited built-in observability features, often requiring additional tools
  • Resource-intensive compared to lightweight alternatives

Getting Started

To install Emissary-ingress using Helm:

# Add the Datawire repository
helm repo add datawire https://app.getambassador.io

# Create namespace
kubectl create namespace emissary

# Install Emissary-ingress
helm install emissary-ingress datawire/emissary-ingress --namespace emissary

# Wait for the deployment to complete
kubectl wait --for condition=available --timeout=90s deploy -l app.kubernetes.io/instance=emissary-ingress -n emissary

To create a basic Mapping:

apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
  name: example-mapping
spec:
  hostname: "*"
  prefix: /example/
  service: example-service

Apply the Mapping:

kubectl apply -f example-mapping.yaml

For more detailed configuration and advanced features, refer to the official Emissary-ingress documentation.

Competitor Comparisons

open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

Pros of emissary

  • Actively maintained and regularly updated
  • Extensive documentation and community support
  • Seamless integration with Kubernetes environments

Cons of emissary

  • Steeper learning curve for beginners
  • May require more resources compared to simpler alternatives
  • Configuration complexity for advanced use cases

Code Comparison

Both repositories contain the same codebase, as emissary-ingress/emissary is the main repository for the Emissary-ingress project. Here's a sample of the code structure:

# emissary/charts/emissary-ingress/templates/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "emissary.fullname" . }}
  labels:
    {{- include "emissary.labels" . | nindent 4 }}

This code snippet showcases the Kubernetes deployment configuration for Emissary-ingress, which is consistent across both repositories.

24,693

Cloud-native high-performance edge/middle/service proxy

Pros of Envoy

  • More mature and widely adopted project with extensive production use
  • Highly performant and resource-efficient
  • Supports a broader range of protocols and use cases

Cons of Envoy

  • Steeper learning curve and more complex configuration
  • Requires additional tooling for full API gateway functionality
  • Less opinionated, which can lead to more decision-making for users

Code Comparison

Envoy configuration (YAML):

static_resources:
  listeners:
  - address:
      socket_address:
        address: 0.0.0.0
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager

Emissary configuration (YAML):

---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  name: example-mapping
spec:
  prefix: /example/
  service: example-service

Envoy provides a lower-level configuration model, offering more granular control but requiring more detailed setup. Emissary, built on top of Envoy, provides a higher-level abstraction with a more user-friendly configuration format, focusing on API gateway use cases.

Both projects leverage Envoy's core functionality, but Emissary simplifies the configuration process for Kubernetes-native API gateway scenarios, while Envoy offers more flexibility for diverse deployment environments and use cases.

35,688

Connect, secure, control, and observe services.

Pros of Istio

  • More comprehensive service mesh solution with advanced traffic management, security, and observability features
  • Stronger support for multi-cluster and multi-cloud deployments
  • Larger community and ecosystem, with extensive documentation and integrations

Cons of Istio

  • Higher complexity and steeper learning curve
  • Increased resource consumption and potential performance overhead
  • More challenging to set up and maintain, especially for smaller projects

Code Comparison

Istio configuration example:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
  - my-service.example.com
  http:
  - route:
    - destination:
        host: my-service

Emissary configuration example:

apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  name: my-service
spec:
  prefix: /my-service/
  service: my-service

Istio offers more granular control over traffic routing and management, while Emissary provides a simpler configuration for basic use cases. Istio's configuration is more verbose and complex, reflecting its broader feature set, whereas Emissary's configuration is more concise and focused on API gateway functionality.

50,061

The Cloud Native Application Proxy

Pros of Traefik

  • Easier configuration with automatic service discovery
  • More extensive built-in middleware options
  • Better support for non-Kubernetes environments

Cons of Traefik

  • Less focus on API management capabilities
  • More complex configuration for advanced use cases
  • Steeper learning curve for Kubernetes-specific features

Code Comparison

Traefik configuration example:

http:
  routers:
    my-router:
      rule: "Host(`example.com`) && PathPrefix(`/api`)"
      service: my-service
      middlewares:
        - my-middleware

Emissary configuration example:

apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
  name: example-mapping
spec:
  prefix: /api/
  service: example-service

Both Traefik and Emissary are popular ingress controllers and API gateways, but they have different strengths. Traefik excels in ease of use and versatility across various environments, while Emissary (formerly Ambassador) is more focused on Kubernetes-native API management. Traefik offers more built-in features and middleware options, making it easier to set up complex routing scenarios. However, Emissary provides a more straightforward configuration for Kubernetes-specific use cases and offers more advanced API management capabilities out of the box.

3,695

Contour is a Kubernetes ingress controller using Envoy proxy.

Pros of Contour

  • Simpler configuration and setup process
  • Better integration with Kubernetes native resources
  • Faster performance for high-traffic scenarios

Cons of Contour

  • Less flexible customization options
  • Limited support for non-HTTP protocols
  • Smaller ecosystem and community compared to Emissary

Code Comparison

Contour configuration example:

apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
  name: example
spec:
  virtualhost:
    fqdn: example.com
  routes:
    - conditions:
      - prefix: /
      services:
        - name: example-service
          port: 80

Emissary configuration example:

apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
  name: example
spec:
  prefix: /
  service: example-service:80
  host: example.com

Both projects aim to provide Kubernetes ingress solutions, but they differ in their approach and feature sets. Contour focuses on simplicity and native Kubernetes integration, while Emissary offers more advanced customization options at the cost of increased complexity. The code examples demonstrate the difference in configuration syntax, with Contour using the HTTPProxy resource and Emissary using its custom Mapping resource.

38,788

🦍 The Cloud-Native API Gateway and AI Gateway.

Pros of Kong

  • More extensive plugin ecosystem with 100+ plugins available
  • Offers both open-source and enterprise editions with additional features
  • Supports multiple protocols beyond HTTP, including TCP, UDP, and gRPC

Cons of Kong

  • More complex configuration and setup process
  • Higher resource consumption, especially for larger deployments
  • Steeper learning curve for newcomers to API gateway concepts

Code Comparison

Kong configuration example:

services:
  - name: example-service
    url: http://example.com
    routes:
      - name: example-route
        paths:
          - /example

Emissary configuration example:

---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  name: example-mapping
spec:
  prefix: /example
  service: http://example.com

Both Kong and Emissary are popular API gateway solutions, but they differ in their approach and feature sets. Kong offers a more comprehensive set of features and plugins, making it suitable for complex enterprise environments. Emissary, on the other hand, focuses on simplicity and ease of use, making it a good choice for Kubernetes-native deployments and teams looking for a straightforward API gateway solution.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Emissary-ingress

Version Docker Repository Join Slack Core Infrastructure Initiative: Best Practices Artifact HUB

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:

See the full list of features here.

Branches

(If you are looking at this list on a branch other than master, it may be out of date.)

  • master - branch for Emissary-ingress dev work ( :heavy_check_mark: upcoming release)
  • release/v3.9 - branch for Emissary-ingress 3.9.z work
  • release/v2.5 - branch for Emissary-ingress 2.5.z work ( :heavy_check_mark: maintenance)

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

Check out the full Emissary documentation at www.getambassador.io/docs/open-source.

Community

Emissary-ingress is a CNCF Incubating project and welcomes any and all contributors.

Check out the Community/ directory for information on the way the community is run, including:

The best way to join the community is to join the CNCF Slack #emissary-ingress channel.

Check out the DevDocumentation/ directory for information on the technicals of Emissary, most notably the CONTRIBUTING.md contributor's guide.

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/.