Top Related Projects
Connect, secure, control, and observe services.
Ingress NGINX Controller for Kubernetes
The Cloud Native Application Proxy
Contour is a Kubernetes ingress controller using Envoy proxy.
NGINX and NGINX Plus Ingress Controllers for Kubernetes
🦍 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:
- Install Envoy Gateway in your Kubernetes cluster:
kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/latest/install.yaml
- Create a GatewayClass resource:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
name: eg
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
- 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
- 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
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.
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.
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.
🦍 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
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Envoy Gateway
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
- Blog introducing Envoy Gateway.
- Goals
- Quickstart to use Envoy Gateway in a few simple steps.
- Roadmap
- Compatibility Matrix
Contact
- envoy-gateway-announce: Join our mailing list to receive important announcements.
- Slack: Join the Envoy Slack workspace if you're not already a member. Otherwise, use the Envoy Gateway channel to start collaborating with the community.
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.
Top Related Projects
Connect, secure, control, and observe services.
Ingress NGINX Controller for Kubernetes
The Cloud Native Application Proxy
Contour is a Kubernetes ingress controller using Envoy proxy.
NGINX and NGINX Plus Ingress Controllers for Kubernetes
🦍 The Cloud-Native API Gateway and AI Gateway.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot