Skip to main content
Agentgateway includes a Kubernetes controller that integrates with the Gateway API. The controller watches Gateway API resources and dynamically provisions and configures agentgateway data plane instances.

Architecture

The Kubernetes deployment has two layers:
  • Controller — a Go-based Kubernetes controller that reconciles Gateway API and agentgateway CRDs, then pushes configuration to data plane instances via xDS.
  • Data plane (proxy) — the agentgateway Rust binary, deployed as a managed Deployment per Gateway resource.

Installation

Agentgateway is distributed as two Helm charts:
Check the Kubernetes documentation for the latest install commands and chart versions as the registry may change between releases.
1

Install the Gateway API CRDs

2

Install the Agentgateway CRDs

3

Install the controller

4

Verify the controller is running

You should see the controller pod in Running state.

Gateway API integration

Agentgateway registers a GatewayClass named agentgateway. Create a Gateway referencing this class to provision a data plane instance:
When you create the Gateway resource, the controller provisions a Deployment and Service for the agentgateway proxy in the same namespace.

Custom Resources

Agentgateway defines three CRDs under the agentgateway.dev API group:
AgentgatewayParameters customizes how the controller provisions the data plane. Attach it to a GatewayClass via parametersRef to apply settings to all gateways using that class, or target individual gateways.
Key spec fields:
AgentgatewayPolicy attaches traffic, frontend, or backend policies to Gateway API resources.
Policies support three sections:Policies merge at each level with more specific policies taking precedence: Gateway < Listener < Route < Route Rule < Backend.
AgentgatewayBackend defines a static backend (e.g. an MCP server reachable via HTTP) that can be referenced from HTTPRoute rules.Use this when your MCP or AI backend is not a Kubernetes Service — for example, an external API or a stdio-based process.

Helm chart configuration

The agentgateway chart exposes values for tuning the controller and proxy:

Enabling xDS TLS

To encrypt communication between the controller and proxy on the xDS gRPC channel:
When TLS is enabled, create a Secret named agentgateway-xds-cert in the installation namespace:
The Secret must include tls.crt, tls.key, and ca.crt data fields.

Namespace isolation and multi-tenancy

By default, the controller discovers Gateway API resources across all namespaces. Use discoveryNamespaceSelectors to restrict discovery to specific namespaces:
This restricts the controller to only reconcile resources in namespaces labelled agentgateway.dev/managed: "true", enabling multi-tenant deployments where different teams control their own namespaces.

Istio integration

Agentgateway can connect natively to Istio-enabled pods using mTLS. Enable Istio integration in AgentgatewayParameters:
When configured, agentgateway joins the Istio mesh and establishes mTLS connections to workloads without requiring sidecar injection on the gateway pod itself.

GatewayClass parameters

To attach AgentgatewayParameters to a GatewayClass, configure gatewayClassParametersRefs in the Helm values:
This sets the default AgentgatewayParameters for all Gateway resources using the agentgateway GatewayClass.

Scaling and resilience

Horizontal Pod Autoscaler

Configure HPA on the controller via controller.horizontalPodAutoscaler. The controller manages the HPA scaleTargetRef automatically.

Pod Disruption Budget

Configure PDB on the controller via controller.podDisruptionBudget to ensure availability during voluntary disruptions.

Resource limits

Set CPU and memory requests and limits via resources in the Helm values or AgentgatewayParameters.spec.resources.

Graceful shutdown

Configure AgentgatewayParameters.spec.shutdown.min and .max to control the drain window for rolling updates.