Kgateway is a Kubernetes-native API gateway. Its control plane watches Kubernetes Gateway API resources and turns them into configuration for Envoy proxies that carry traffic into, out of and between workloads. It addresses the need for a standards-based replacement for annotation-driven ingress controllers, with routing, authentication, rate limiting and resilience policies expressed as Kubernetes resources. Solo.io announced at KubeCon North America 2024 that it would donate its Gloo Gateway open source project to the CNCF, and the project was renamed kgateway. It was accepted into the CNCF at the Sandbox level on March 4, 2025.
CNCF daily · Sprint 2, day 3 · API Gateway
At a glance
| Category | API Gateway |
| CNCF status | Sandbox. Accepted March 4, 2025 |
| Written in | Go (control plane); data plane is Envoy |
| License | Apache 2.0 |
| Current release line | kgateway 2.4 (2.4.4 listed as the latest release in the project’s GitHub releases) |
| Gateway API support | Standard channel v1.2.1 to v1.6.1 for the 2.4 line, with conformance to the Gateway API and the Inference Extension reported from 2.1 |
| AI features | Since 2.3.0 the AI and agent control plane lives in the separate agentgateway project; kgateway focuses on Envoy |
Architecture
flowchart TB
GAPI[Gateway API resources<br/>GatewayClass, Gateway, HTTPRoute] --> CP[kgateway control plane<br/>translates and validates]
POL[Policy resources<br/>TrafficPolicy and others] --> CP
CP -->|xDS configuration| ENV[Envoy proxies<br/>one deployment per Gateway]
CP -->|deploys and manages| ENV
CLIENT[Clients] -->|HTTP, HTTPS, gRPC| ENV
ENV --> SVC[Backend Services<br/>pods in the cluster]
ENV --> EXT[External backends<br/>cloud services, other clusters]
ENV -->|metrics and traces| OBS[Prometheus, Grafana,<br/>OpenTelemetry]
ISTIO[Istio ambient mesh] -->|waypoint integration| ENV
| Component | Responsibility |
|---|---|
| Control plane | Watches Gateway API and policy resources, validates them, translates them into Envoy configuration and pushes it over xDS. |
| Envoy data plane | Proxies are deployed per Gateway and enforce routing, TLS, retries, timeouts, authentication and rate limits. |
| Gateway API resources | GatewayClass, Gateway and HTTPRoute (plus related route kinds) describe listeners and routing in a vendor-neutral way. |
| Policy resources | Kgateway extensions, such as traffic and authentication policies, attach to Gateways or routes for behaviour beyond the base API. |
| Waypoint integration | The project can act as a Layer 7 waypoint proxy for Istio ambient mesh. |
Design principle. Kgateway keeps configuration on the Kubernetes Gateway API, the community standard that succeeds Ingress, and adds extensions only where the standard stops. That keeps routes portable across implementations while the project supplies the Envoy-based data plane and the operational features around it.
Production reference design
A typical deployment on EKS, GKE, AKS or on-premises Kubernetes installs the Gateway API CRDs and kgateway through Helm, then manages Gateways and routes through GitOps.
- Install the Gateway API CRDs, using a release within the supported range:
kubectl apply --server-side -f \ https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.1/standard-install.yaml - Install kgateway with its CRDs chart and then the control plane chart, pinning the version:
helm upgrade -i kgateway-crds oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds \ --namespace kgateway-system --create-namespace --version v2.4.4 helm upgrade -i kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \ --namespace kgateway-system --version v2.4.4 - Declare a Gateway with TLS, restricting which namespaces may attach routes:
apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: public namespace: gateways spec: gatewayClassName: kgateway listeners: - name: https port: 443 protocol: HTTPS hostname: shop.example.com tls: mode: Terminate certificateRefs: - name: shop-example-com allowedRoutes: namespaces: from: Selector selector: matchLabels: gateway-access: "true" - Attach application routes from the owning namespace, with a timeout and weighted backends for a canary:
apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: orders namespace: shop spec: parentRefs: - name: public namespace: gateways hostnames: [shop.example.com] rules: - matches: - path: { type: PathPrefix, value: /api/orders } timeouts: request: 10s backendRefs: - name: orders-v1 port: 8080 weight: 90 - name: orders-v2 port: 8080 weight: 10 - Run the data plane for availability: scale the Envoy deployments, spread them across zones, and use a cloud load balancer Service in front.
- Add policies and observability for authentication, rate limiting and retries as the policy resources support them, and scrape Envoy metrics into Prometheus and Grafana.
Typical production uses are replacing ingress-nginx, shared edge gateways for many teams with namespace-level delegation, API traffic management, and an Envoy waypoint for Istio ambient mesh.
Operational considerations
- Scaling: scale the Envoy proxy deployments with CPU or request rate (the project supports bring-your-own HPA), and keep route counts reasonable per Gateway; separate Gateways per team or domain limit blast radius.
- High availability: run multiple proxy replicas across zones with PodDisruptionBudgets, and keep the control plane replicated; existing Envoy proxies keep serving traffic with their last configuration if the control plane is briefly unavailable.
- Security: terminate TLS with certificates from cert-manager, restrict
allowedRoutesand useReferenceGrantfor cross-namespace references, and keep policy attachment limited to platform teams. - Cost and sizing: each Gateway creates its own proxy deployment and usually a cloud load balancer, which adds cost; share Gateways across teams where isolation permits.
- Common pitfalls: mixing Gateway API CRD versions outside the supported range, moving Ingress annotations across one by one instead of translating them to routes and policies, and relying on the Envoy-based AI features that were deprecated in favour of agentgateway. Read the release notes before each minor upgrade, since the project is at Sandbox maturity and moves quickly.
Adoption
Kgateway has no formal adopters list on its CNCF page or repository. In Solo.io’s own writing, engineers at 24x7 Systems, Xepelin and Resident describe using it: Xepelin adopted it while moving from Ingress to the Gateway API and is testing the Istio ambient waypoint integration. The project descends from Gloo Gateway, which Solo.io describes as widely deployed, and Solo.io sells an enterprise distribution built on it.
Alternatives
| Solution | Model | Best suited to |
|---|---|---|
| Envoy Gateway (Envoy project, CNCF Graduated) | Gateway API implementation on Envoy | Teams wanting the Envoy project’s own Gateway API controller |
| Istio ingress gateway (CNCF Graduated) | Gateway API on Envoy within a mesh | Clusters already running Istio |
| Cilium Gateway API (CNCF Graduated) | eBPF-based networking with Gateway API | Clusters already using Cilium |
| NGINX Gateway Fabric (NON CNCF) | Gateway API on NGINX | Organisations standardised on NGINX |
| Traefik, Kong, Contour | Gateways and ingress controllers with Gateway API support | Teams that prefer those products’ features and ecosystems |
Strengths and limitations
| Strengths | Limitations |
|---|---|
| Standards-based on the Kubernetes Gateway API | Sandbox maturity; governance and APIs are still evolving |
| Envoy data plane with a mature feature set | Extension policies are kgateway-specific and not portable |
| Reported Gateway API and Inference Extension conformance | Fewer public adopters than long-established gateways |
| Can serve as an Istio ambient waypoint | AI functions moved to a separate project, which readers must track |
| Backed by a vendor and an open governance model | Per-Gateway proxy deployments add resource and load balancer cost |
Recommendation
Assess, moving to Trial for teams replacing ingress-nginx that already plan to adopt the Gateway API. Start with a non-production Gateway, translate a few routes with the standard resources, and measure behaviour against your current controller before moving traffic. Production-critical edges that need the widest adopter base should compare Envoy Gateway, Istio or Cilium alongside it, given the Sandbox status.
References: CNCF project page · kgateway on GitHub · CNCF: Advancing open source gateways with kgateway · CNCF: Kgateway v2.1 is released · Solo.io: Kgateway as an alternative to ingress-nginx · kgateway documentation