# Deploy the ZAPP Aggregator

> Deploy the ZAPP Aggregator with Helm.

---

LLMS index: [llms.txt](/datacenter/zapp/llms.txt)

---

Deploy the ZAPP Aggregator before deploying ZAPP Listener instances.

The ZAPP Aggregator receives telemetry from listeners and exposes listener gRPC, UDP telemetry ingest, subscriber gRPC, metrics, and manifest endpoints.

## ZAPP Aggregator values

Most deployments only need to review the image, replica count, ports, resources, metrics, and ServiceMonitor settings.

```yaml
zappAggregator:
  enabled: true
  image:
    repository: nvcr.io/nvidia/zapp-aggregator
    tag: ""
    pullPolicy: IfNotPresent

  replicas: 1
  logLevel: info
  metricsPort: 8888
  manifestUI: true

  containerPorts:
    listenerGrpc: 9991
    udpTelemetry: 9992
    clientGrpc: 9999

  serviceMonitor:
    enabled: false
    interval: 30s
```

Important fields:

- `zappAggregator.image` controls the ZAPP Aggregator image and tag
- `zappAggregator.replicas` controls the ZAPP Aggregator StatefulSet replica count
- `zappAggregator.containerPorts.listenerGrpc` is the listener connection port
- `zappAggregator.containerPorts.clientGrpc` is the subscriber client port
- `zappAggregator.metricsPort` serves `/metrics`, `/manifest`, and `/manifest.json`
- `zappAggregator.serviceMonitor.enabled` creates a ServiceMonitor when the Prometheus Operator is installed

## Install the ZAPP Aggregator

Create a values file for the ZAPP Aggregator, then install the chart.

```bash
kubectl create namespace <namespace>

helm upgrade --install zapp-aggregator <path-to-zapp-aggregator-chart> \
  --namespace <namespace> \
  --values aggregator-values.yaml \
  --set-string fullnameOverride=zapp
```

Using `fullnameOverride=zapp` for the ZAPP Aggregator chart produces the stable service name `zapp-aggregator`. If you use a different release name or override, set `zapp.aggregatorHost` in the `zapp` listener values to the ZAPP Aggregator gRPC service name and port that your chart renders.

## Verify the ZAPP Aggregator

Check the Helm release and ZAPP Aggregator pod:

```bash
helm list --namespace <namespace>
kubectl get pods --namespace <namespace>
```

Port-forward the ZAPP Aggregator metrics service:

```bash
kubectl --namespace <namespace> port-forward svc/zapp-aggregator-metrics 8888:8888
```

Open `http://localhost:8888/manifest` or request metrics:

```bash
curl http://localhost:8888/metrics
```

After the ZAPP Aggregator is running, deploy [ZAPP Listeners](/docs/deployment/zapp/).
