Skip to main content
The Kubernetes deployment of Agentgateway consists of two components:
  • 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-Gateway resource by the controller.
The controller integrates with the Kubernetes Gateway API and extends it with Agentgateway-specific custom resources.

Prerequisites

  • A running Kubernetes cluster (v1.24+)
  • kubectl configured to talk to the cluster
  • Helm v3.x
  • Gateway API CRDs installed on the cluster

Installation

1

Install the Gateway API CRDs

Agentgateway requires the standard Kubernetes Gateway API CRDs. Install them before deploying the controller.
2

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:
3

Install the Agentgateway controller

The chart deploys the controller Deployment, Service, ServiceAccount, and Role resources into the target namespace.
4

Verify the installation

Wait until the controller pod shows Running and passes its readiness probe.

Helm values

The chart ships with a comprehensive values.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
Enable the Horizontal Pod Autoscaler for the controller:
values.yaml
Enable the Vertical Pod Autoscaler:
values.yaml

Pod disruption budget

values.yaml

Creating a Gateway

Once the controller is running, create a Gateway resource that references the agentgateway GatewayClass:
gateway.yaml
Apply it:
The controller detects the new 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 discovers Gateway resources across all namespaces. To restrict discovery to specific namespaces, set discoveryNamespaceSelectors in your Helm values:
values.yaml
Then label the namespaces you want included:

Health checks

The controller deployment includes readiness and startup probes configured in the Helm chart:
The controller exposes three ports:
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
The secret must contain 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 a Tiltfile that builds both the controller and data plane with live-update support:
Tilt compiles the Go controller and Rust proxy incrementally, syncs binaries into running containers without full rebuilds, and deploys everything via Helm.
See the Tiltfile in the repository root for the full configuration, including how AgentgatewayParameters overrides are used to allow live-update file writes inside the proxy container.