Convert Figma logo to code with AI

envoyproxy logogateway

Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway

1,784
423
1,784
397

Top Related Projects

36,361

Connect, secure, control, and observe services.

Ingress NGINX Controller for Kubernetes

52,811

The Cloud Native Application Proxy

3,746

Contour is a Kubernetes ingress controller using Envoy proxy.

NGINX and NGINX Plus Ingress Controllers for Kubernetes

39,796

🦍 The Cloud-Native API Gateway and AI Gateway.

Quick Overview

Envoy Gateway is an open-source project that aims to simplify the deployment and management of Envoy as an API Gateway. It provides a Kubernetes-native way to configure and operate Envoy, making it easier for users to leverage Envoy's powerful features in a cloud-native environment.

Pros

  • Kubernetes-native: Seamlessly integrates with Kubernetes, utilizing custom resources for configuration
  • Simplified configuration: Abstracts complex Envoy configurations into more user-friendly formats
  • Extensible: Supports custom resource definitions (CRDs) for extending functionality
  • Community-driven: Backed by the CNCF and a growing community of contributors

Cons

  • Relatively new project: May lack some features or documentation compared to more established API gateways
  • Kubernetes-focused: Might not be the best fit for non-Kubernetes environments
  • Learning curve: Users need to understand both Kubernetes and Envoy concepts

Getting Started

To get started with Envoy Gateway, follow these steps:

  1. Install Envoy Gateway in your Kubernetes cluster:
kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/latest/install.yaml
  1. Create a GatewayClass resource:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
  name: eg
spec:
  controllerName: gateway.envoyproxy.io/gatewayclass-controller
  1. Create a Gateway resource:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: example-gateway
  namespace: default
spec:
  gatewayClassName: eg
  listeners:
  - name: http
    port: 80
    protocol: HTTP
  1. Create an HTTPRoute to route traffic:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: example-route
  namespace: default
spec:
  parentRefs:
  - name: example-gateway
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: example-service
      port: 8080

Apply these YAML configurations to your cluster using kubectl apply -f <filename>.yaml. Envoy Gateway will then configure Envoy to route traffic according to your specifications.

Competitor Comparisons

36,361

Connect, secure, control, and observe services.

Pros of Istio

  • Comprehensive service mesh solution with advanced traffic management, security, and observability features
  • Strong integration with Kubernetes and cloud-native ecosystems
  • Extensive documentation and community support

Cons of Istio

  • Higher complexity and steeper learning curve
  • Resource-intensive, potentially impacting performance in smaller deployments
  • Requires more configuration and management overhead

Code Comparison

Istio configuration example:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
  - my-service.default.svc.cluster.local
  http:
  - route:
    - destination:
        host: my-service
        subset: v1

Gateway configuration example:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: http-route
spec:
  hostnames:
  - "foo.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /bar
    backendRefs:
    - name: my-service
      port: 8080

Gateway focuses on API Gateway functionality, while Istio provides a full-featured service mesh. Gateway is lighter-weight and easier to adopt, but lacks some advanced features of Istio. The choice depends on specific project requirements and infrastructure complexity.

Ingress NGINX Controller for Kubernetes

Pros of ingress-nginx

  • Mature and widely adopted in the Kubernetes ecosystem
  • Extensive documentation and community support
  • Seamless integration with Kubernetes native resources

Cons of ingress-nginx

  • Limited to HTTP/HTTPS traffic routing
  • Less flexible for complex routing scenarios
  • Performance may be lower for high-traffic environments

Code Comparison

ingress-nginx configuration:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /prefix(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: example-service
            port: 
              number: 80

gateway configuration:

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
  name: http-app-1
spec:
  parentRefs:
  - name: example-gateway
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /app-1
    backendRefs:
    - name: app-1
      port: 8080

The gateway project offers a more flexible and powerful routing configuration, while ingress-nginx provides a simpler, more straightforward approach for basic HTTP routing in Kubernetes environments.

52,811

The Cloud Native Application Proxy

Pros of Traefik

  • Easier to configure and get started with, especially for simple use cases
  • Built-in automatic HTTPS with Let's Encrypt integration
  • More extensive built-in middleware options out of the box

Cons of Traefik

  • Less flexible and extensible compared to Gateway
  • May not perform as well under extremely high loads
  • Limited support for non-HTTP protocols

Code Comparison

Traefik configuration (YAML):

http:
  routers:
    my-router:
      rule: "Host(`example.com`)"
      service: my-service
  services:
    my-service:
      loadBalancer:
        servers:
          - url: "http://localhost:8080"

Gateway configuration (YAML):

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
spec:
  hostnames:
  - "example.com"
  rules:
  - backendRefs:
    - name: my-service
      port: 8080

Both Traefik and Gateway are powerful API gateways and reverse proxies, but they cater to different use cases. Traefik is more user-friendly and suitable for simpler setups, while Gateway offers more flexibility and is designed for complex, high-performance scenarios. The choice between them depends on specific project requirements and the desired level of customization.

3,746

Contour is a Kubernetes ingress controller using Envoy proxy.

Pros of Contour

  • More mature and battle-tested in production environments
  • Simpler architecture, focusing specifically on Kubernetes ingress
  • Better documentation and community support

Cons of Contour

  • Less flexible for non-Kubernetes environments
  • Limited to HTTP/HTTPS traffic management
  • Smaller feature set compared to Gateway's broader capabilities

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

Gateway configuration example:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: example
spec:
  hostnames:
  - "example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: example-service
      port: 80

Both projects use Envoy as the underlying proxy, but Gateway aims to be more extensible and support a wider range of use cases beyond Kubernetes. Contour is more focused on providing a robust ingress solution specifically for Kubernetes environments. The choice between the two depends on the specific requirements of your infrastructure and the level of flexibility needed.

NGINX and NGINX Plus Ingress Controllers for Kubernetes

Pros of kubernetes-ingress

  • Mature and widely adopted in production environments
  • Extensive documentation and community support
  • Seamless integration with NGINX's commercial offerings

Cons of kubernetes-ingress

  • Less flexible configuration options compared to gateway
  • Heavier resource footprint, especially in large-scale deployments
  • Steeper learning curve for advanced features

Code Comparison

kubernetes-ingress configuration:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /prefix(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: example-service
            port: 
              number: 80

gateway configuration:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: http-app-1
spec:
  parentRefs:
  - name: example-gateway
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /app-1
    backendRefs:
    - name: app-1
      port: 8080

The gateway project offers a more streamlined and flexible configuration syntax, while kubernetes-ingress relies on annotations for advanced features. Both projects aim to provide robust ingress solutions for Kubernetes environments, with gateway focusing on a more modern and extensible approach.

39,796

🦍 The Cloud-Native API Gateway and AI Gateway.

Pros of Kong

  • More mature and widely adopted API gateway with a larger ecosystem
  • Offers a user-friendly GUI for configuration and management
  • Extensive plugin system with a wide range of pre-built plugins

Cons of Kong

  • Heavier resource footprint compared to Gateway
  • More complex setup and configuration process
  • Less flexible in terms of customization and extensibility

Code Comparison

Kong configuration example:

local kong = kong
kong.service.request.set_header("X-Custom-Header", "Value")
kong.service.request.set_method("POST")

Gateway configuration example:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
spec:
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api

While both projects serve as API gateways, Kong is a more established solution with a rich feature set and extensive plugin ecosystem. It offers a GUI for easier management but comes with a heavier resource footprint and more complex setup.

Gateway, being based on Envoy, is lighter and more flexible, making it easier to customize and extend. It's designed with a cloud-native approach, integrating well with Kubernetes, but has a smaller ecosystem and fewer out-of-the-box features compared to Kong.

The code examples showcase the different approaches: Kong uses Lua for configuration and customization, while Gateway relies on Kubernetes-style YAML configurations, reflecting its cloud-native design.

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

Envoy Gateway

OpenSSF Scorecard Build and Test codecov CodeQL OSV-Scanner Trivy

Envoy Gateway Logo

Envoy Gateway is an open source project for managing Envoy Proxy as a standalone or Kubernetes-based application gateway. Gateway API resources are used to dynamically provision and configure the managed Envoy Proxies.

Documentation

Contact

Contributing

Security Reporting

If you've found a security vulnerability or a process crash, please follow the instructions in SECURITY.md to submit a report.

Community Meeting

The Envoy Gateway team meets every Tuesday and Thursday. We also have a separate meeting to be held in the Chinese timezone every two weeks to better accommodate our Chinese community members who face scheduling difficulties for the weekly meetings. Please refer to the meeting details for additional information.