- Controller — a Go-based control plane that watches Kubernetes resources and translates them into xDS configuration for the data plane.
- Proxy (data plane) — the Rust-based agentgateway binary, deployed per-
Gatewayresource by the controller.
Prerequisites
- A running Kubernetes cluster (v1.24+)
kubectlconfigured to talk to the cluster- Helm v3.x
- Gateway API CRDs installed on the cluster
Installation
Install the Gateway API CRDs
Agentgateway requires the standard Kubernetes Gateway API CRDs. Install them before deploying the controller.
Install the Agentgateway CRDs
The Agentgateway CRDs are packaged in a separate Helm chart so they can be upgraded independently of the controller.This installs three CRDs in the
agentgateway.dev API group:| CRD | Short name | Description |
|---|---|---|
AgentgatewayParameters | agpar | Data-plane deployment configuration per Gateway |
AgentgatewayBackends | — | Backend pool definitions |
AgentgatewayPolicies | — | Policy attachments (auth, rate-limiting, etc.) |
Install the Agentgateway controller
Deployment, Service, ServiceAccount, and Role resources into the target namespace.Helm values
The chart ships with a comprehensivevalues.yaml. The most commonly customized sections are shown below.
Image configuration
values.yaml
Resource limits and autoscaling
Set resource requests and limits on the controller pod:values.yaml
values.yaml
values.yaml
Pod disruption budget
values.yaml
Creating a Gateway
Once the controller is running, create aGateway resource that references the agentgateway GatewayClass:
gateway.yaml
Gateway and provisions a proxy Deployment and Service for it automatically.
Customizing the data plane with AgentgatewayParameters
AgentgatewayParameters lets you customize the proxy Deployment that the controller generates for each Gateway. Reference it from a Gateway using the infrastructure.parametersRef field:
parameters.yaml
Namespace isolation and discovery
By default the controller discoversGateway resources across all namespaces. To restrict discovery to specific namespaces, set discoveryNamespaceSelectors in your Helm values:
values.yaml
Health checks
The controller deployment includes readiness and startup probes configured in the Helm chart:| Port | Name | Description |
|---|---|---|
9978 | grpc-xds-agw | xDS gRPC server (controller → proxy) |
9093 | health | Readiness probe endpoint (/readyz) |
9092 | metrics | Prometheus metrics (/metrics) |
The proxy pods provisioned per-
Gateway expose port 8080 (or whatever port is declared in the Gateway listeners) and the standard agentgateway admin ports (15000, 15020, 15021).TLS for xDS communication
To encrypt traffic between the controller and the proxy over gRPC, enable xDS TLS and create the required secret:values.yaml
tls.crt, tls.key, and ca.crt fields and must be named agentgateway-xds-cert in the installation namespace.
Private image registries
To pull images from a private registry, add image pull secrets to your Helm values:values.yaml
Development with Tilt
For iterative development on a local Kind cluster, the repository includes aTiltfile that builds both the controller and data plane with live-update support: