mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Self-Hostedevaluationupdated 26 Aug 2026

gateway review

Envoy Gateway is a control plane that turns Kubernetes Gateway API resources into managed Envoy Proxy deployments and configuration. It gives platform teams a Kubernetes-native way to run application gateways without writing Envoy xDS configuration by hand.

+15stars / 7d
Verdict

Our Envoy Gateway run built in 215 seconds, but 5 of 58 Go test results failed, so commit d32f282 did not clear a fresh-container contributor check. It remains a serious choice for Kubernetes teams already committed to Gateway API and Envoy, especially when policy and controller ownership are worth the extra layer. Test upgrades against your route scale and failure modes; choose a simpler gateway when you do not need this control plane.

We ran it

Lab card: what happened when we ran gatewayScreenshot of gateway (gateway.envoyproxy.io)
Install✓ · 78s550 packages
Build✓ · 215s
Tests✗ · 144s53 passed · 5 failed of 58 (go test)
Repo6936 files~306,564 lines of source · 80.1 MB · 13 CI workflows · tests dir

Answers from our run

Does gateway build from source?

Dependencies installed in 78 seconds (550 packages), and the build succeeded in 215 seconds. We cloned commit d32f282 into a clean Debian container with 3 CPUs and no project-specific setup.

Do gateway's tests pass?

Not all of them: 53 of 58 passed and 5 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use gateway?

Small deployments that only need a simple reverse proxy: the controller, CRDs, Envoy data plane, and policy model add operating work.

What are the alternatives to gateway?

NGINX Gateway Fabric, Traefik, Istio. Our Envoy Gateway run built in 215 seconds, but 5 of 58 Go test results failed, so commit d32f282 did not clear a fresh-container contributor check.

Setup2/5Build works, but the full Go test command failed in our container
Docs5/5Versioned tasks, compatibility, operations, and API references
Community5/5Active release cadence and 767 combined issues and pull requests
Maturity4/5v1.9.0 is active, though current status and scale gaps remain

Discussed on

  1. hnEnvoy Gateway: An Envoy Proxy-Based Gateway14 points
  2. hnAnnouncing Gloo 1.0 – Envoy Proxy Based API Gateway9 points
  3. hnShow HN: Arch GW – Distributed gateway for agents, engineered with small LLMs7 points
  4. hnCustomize Envoy Proxy API Gateway with Web Assembly3 points
  5. hnEnvoy Gateway3 points

Who it’s for

Kubernetes platform teams standardizing ingress and application routing on Gateway API.
Envoy users who want controllers, status conditions, Helm installation, and policy resources around the proxy.
Organizations that need HTTP, gRPC, TCP, TLS, security, traffic, and observability policies in one gateway layer.
Contributors comfortable working in a large Go and Kubernetes codebase.

Who it’s NOT for

Small deployments that only need a simple reverse proxy: the controller, CRDs, Envoy data plane, and policy model add operating work.
Large clusters that require immediate endpoint propagation: issue 9777 says endpoint changes currently wait for full translation and can stay stale under churn.
Operators relying on status to expose every rejected data-plane update: issue 9198 says Envoy NACKs can leave stale configuration silently accepted.
Host-network deployments expecting clean draining on v1.7.1: issue 9853 reports shutdown-manager connection failures in that mode.

Setup reality

Our sandbox downloaded 550 Go packages in 78 seconds. The build succeeded in 215 seconds. Tests exited with code 1 after 144 seconds: 53 passed and 5 failed out of 58. The supplied log tail ends with package listings and FAIL, without naming the five failures.

Trying the product requires a Kubernetes cluster, Gateway API resources, the Envoy Gateway controller, and provisioned Envoy proxies. Production work also needs certificates, load-balancer integration, observability, upgrade planning, and policies for routes and namespaces.

The checkout held 6,936 files and about 306,564 source lines. Our scan found 13 CI workflows, a tests directory, and no root Dockerfile. Building the controller is easier than reproducing a realistic multi-node gateway environment.

Gateway API resources become managed Envoy proxies

Envoy Gateway watches Kubernetes Gateway API objects and translates them into infrastructure plus xDS configuration for Envoy Proxy. A GatewayClass selects the controller, a Gateway declares listeners, and routes attach application traffic. Project policies cover client and backend traffic, security, telemetry, and the generated Envoy deployment. Platform teams get a declarative interface while application namespaces work with standard route resources instead of controller-specific annotations.

The project can also manage Envoy as a standalone application gateway, but Kubernetes is the main operational story. Envoy Gateway owns the control plane; Envoy remains the data plane carrying requests. That split gives users Envoy's protocol and filter capabilities without asking every operator to author raw bootstrap configuration. It also creates two systems to observe: the controller may accept a resource while the proxy later rejects generated xDS.

Version 1.9.0 is active, with compatibility work still moving

GitHub listed 2,990 stars, 767 combined issues and pull requests, and a last push on August 26, 2026. Release v1.9.0 arrived August 15. Its changes cover Gateway API compatibility, listener conflicts, backend TLS, health checks, status, Helm permissions, security contexts, metrics, and dependency upgrades. That is active project health, while the large combined queue reflects feature work and maintenance rather than 767 confirmed bugs.

What happened when we ran it

Our sandbox downloaded 550 Go packages in 78 seconds, then built the repository in 215 seconds. The test step ran for 144 seconds and exited with code 1. The harness summarized 53 passing and 5 failing results out of 58. commit d32f282 therefore compiled successfully but did not pass its complete Go test command in our unprivileged Debian container with 3 CPUs and 8 GB of RAM.

The provided log tail lists many generated client, informer, lister, and protocol packages with [no test files], then ends at FAIL. It does not identify the five failed results or print an error message for them. We will not assign a cause that the tail does not show. A contributor should retain the full test log and run the failed packages individually before changing dependencies or system configuration.

The repository measured 80.1 MB across 6,936 files and roughly 306,564 source lines. It had 13 CI workflow files and a tests directory, with no file named Dockerfile at the root. Our build check did not create a Kubernetes cluster or send traffic through an Envoy data plane, so it says nothing about upgrade safety or request handling.

Full translation can delay endpoint changes in large clusters

Issue 9777 describes EndpointSlice updates traveling through a full resource-tree reconcile, Gateway API translation, xDS translation, and snapshot publication. In clusters with tens of thousands of routes and expensive policy patches, the report says a translation can take seconds to tens of seconds. Pod churn can then keep Envoy behind current endpoints because each cheap, frequent endpoint update waits for the most expensive configuration path.

That issue proposes an EDS-only fast path. Teams operating ordinary route counts may never notice the problem, but high-churn clusters should test it directly. During a rollout, record the time from EndpointSlice change to the Envoy endpoint view, then repeat while applying route and policy changes. A control plane that eventually converges can still send traffic to terminated pods during the gap.

Proxy rejection does not always reach Kubernetes status

Issue 9198 reports that a malformed telemetry format can be rejected by Envoy while the Kubernetes resource lacks a useful failure condition. The old proxy may keep its last good configuration, while a newly created proxy has no cached copy and can fail on the bad listener. A rollout or node replacement can therefore turn a latent configuration error into an outage.

Status cannot be the only deployment check until NACK propagation covers these cases. Watch controller logs, xDS NACK metrics, proxy readiness, and a synthetic request through every important listener. Version 1.9.0 added more status and metrics work, but the August issue remains open. An accepted resource proves the controller understood it, not that every Envoy instance applied it.

Edge modes need scenario-specific testing

Issue 8816 says session persistence behaves differently when backend mutual TLS points through a Service FQDN. Direct Service routing can bind the cookie to a pod endpoint, while the FQDN path can bind it to the Service address and allow later requests to land on different pods. Applications depending on sticky sessions should test the exact Backend and TLS combination.

Issue 9853 reports that shutdown-manager failed to reach Envoy's local admin port in a host-network deployment using Envoy Gateway v1.7.1. Its log shows connection refusals during the drain sequence. Version scope matters, but host networking is still a configuration to verify before relying on graceful termination. Uncommon combinations take different paths through translation and lifecycle code.

Choose it when Gateway API is a platform contract

Envoy Gateway earns its place when Gateway API is the contract between application owners and networking operators. Standard resources, versioned documentation, active releases, and Envoy's data plane make a credible foundation. The 215-second build and 550 downloaded packages show the contributor cost, while our 5 failed results require follow-up before modifying the code.

Begin with supported core routes and a small policy set. Add backend TLS, HTTP/3, host networking, custom extensions, or very large route counts one at a time with status and data-plane checks. If the organization only needs a few ingress routes, Traefik or NGINX Gateway Fabric may demand less attention. Envoy Gateway pays off when a shared Kubernetes platform needs the extra control.

Alternatives

ProjectWhat it isPick it when
NGINX Gateway FabricA Gateway API implementation that manages NGINX data planes.pick this instead when your organization already operates NGINX and wants Gateway API without adopting Envoy.
Traefik gh↗An application proxy with dynamic service discovery and Kubernetes Gateway support.pick this instead when simpler configuration and a combined controller-proxy experience matter more than Envoy's extension model.
Istio gh↗A service-mesh platform that also provides ingress and Gateway API integrations through Envoy.pick this instead when east-west mesh policy and workload identity are requirements alongside ingress.

What people are saying

  1. [github-trending] envoyproxy/ai-gateway
  2. [github-trending] envoyproxy/gateway
  3. [lobsters] Biboumi – XMPP gateway to IRC
  4. [techcrunch-ai] Stripe will reportedly acquire AI gateway startup OpenRouter for $7B+
  5. [hackernews] Gateway 2000's hilariously bad ads in the 90s (Part II)

Sources

  1. Envoy Gateway repository and README
  2. Envoy Gateway v1.9.0 release
  3. Issue 9777: endpoint update fast path
  4. Issue 9198: data-plane NACK status gap
  5. Issue 8816: session persistence with backend mTLS
  6. Issue 9853: host-network shutdown manager failure

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →