Deployment
Overview
A basic production Vector deployment consists of a single replica that serves both writes and reads. Vector does not yet support partitioning, so you cannot scale the single writer/reader horizontally. The primary means of scaling is vertical scaling by allocating more cpu/memory/cache, which can take you pretty far. Since all data is persisted on S3, data in Vector is highly durable. So, a basic production deployment of Vector consists of:- A single-replica Deployment running the
opendata-vectorcontainer - An S3 bucket for durable storage
- A PersistentVolumeClaim for the SlateDB disk cache
- A ConfigMap for Vector’s configuration, S3 storage settings, and SlateDB settings.
- A ServiceAccount with an IAM role for S3 access (IRSA on EKS)
- A Service for exposing Vector to other applications
Vector uses SlateDB’s epoch-based fencing, which means only one writer can
hold the epoch lock at a time. The Deployment uses the
Recreate strategy so
that the old pod is fully terminated before the new one starts — a
RollingUpdate creates the possibility for the new pod to be fenced by the old one and never
become ready.Helm Chart
Below is a complete Helm chart for deploying Vector. Create these files undercharts/opendata-vector.
values.yaml
values.yaml
templates/configmap.yaml
templates/configmap.yaml
templates/serviceaccount.yaml
templates/serviceaccount.yaml
templates/pvc.yaml
templates/pvc.yaml
templates/deployment.yaml
templates/deployment.yaml
templates/service.yaml
templates/service.yaml
templates/_helpers.tpl
Install the chart
Health checks
Vector exposes two health-check endpoints:
Both probes are included in the Helm chart’s Deployment template above.
Monitoring
All metrics are exposed at/metrics in Prometheus text format.
Key Metrics
Vector also exposes
slatedb_* metrics from the underlying SlateDB storage
engine. These are useful for debugging storage-level performance and compaction
behavior.TLS and authentication
Object storage security
The Helm chart uses IRSA (IAM Roles for Service Accounts) so that the pod receives temporary AWS credentials automatically — no static access keys required. Create an IAM role with the following policy and attach it to the ServiceAccount via theserviceAccount.roleArn value:
- Enable encryption at rest on the S3 bucket (SSE-S3 or SSE-KMS).
- Use a VPC endpoint for S3 to keep traffic off the public internet.
- Block all public access on the bucket.