Migration Guide: Vector → dfe-transform-vector
This guide covers migrating existing Vector pipelines from the official
timberio/vector Helm chart to the dfe-transform-vector wrapper.
Pipeline Values Migration
A values file for the official Vector chart carries the whole Vector config. dfe-transform-vector's chart takes the "big-dial" config pattern instead, one values file per pipeline. Both releases can run side by side while you move.
Values Format
Before (official Vector chart — vector-syslog.yaml):
replicas: 3
image:
tag: "0.48.0-debian"
persistence:
size: 20Gi
resources:
requests:
cpu: "2"
memory: 2Gi
limits:
cpu: "4"
memory: 4Gi
customConfig:
sources:
kafka_in:
type: kafka
bootstrap_servers: "${KAFKA_BROKERS_SASL_SCRAM}"
group_id: dfe-vector-syslog
topics: [raw_syslog_land]
sasl:
enabled: true
mechanism: SCRAM-SHA-512
username: "${KAFKA_SASL_USERNAME}"
password: "${KAFKA_SASL_PASSWORD}"
tls:
enabled: true
transforms:
# ... 500+ lines of inline VRL ...
sinks:
kafka_out:
type: kafka
bootstrap_servers: "${KAFKA_BROKERS_SASL_SCRAM}"
topic: enriched_syslog_land
# ...
After (dfe-transform-vector — dfe-transform-vector-syslog.yaml):
replicaCount: 3
resources:
requests:
cpu: "2"
memory: 2Gi
limits:
cpu: "4"
memory: 4Gi
config:
pipeline:
name: syslog-enrichment
source:
topics:
- raw_syslog_land
group_id: dfe-transform-vector-syslog
sink:
topic: enriched_syslog_land
key_field: .org_id
compression: zstd
keda:
maxReplicaCount: 20
Key differences:
- No inline VRL — transforms are separate YAML files the wrapper loads from
config.transforms.dir(the image's/etc/dfe-transform-vector/transforms) or lists inconfig.transforms.files - No persistence — Deployment (not StatefulSet), data dir loss just re-reads from Kafka
- SASL/TLS can sit in one values file every pipeline layers over, so each pipeline file carries only its own values
- Kafka brokers come from
DFE_TRANSFORM_VECTOR_SOURCE_BROKERSandDFE_TRANSFORM_VECTOR_SINK_BROKERS. A${VAR}in the config is not expanded: neither the wrapper nor Vector 0.57+ interpolates environment variables - SASL credentials come from the Kafka Secret through
DFE_TRANSFORM_VECTOR_{SOURCE,SINK}_SASL_{USERNAME,PASSWORD}, and the wrapper hands them to Vector's directory secret backend as owner-only files - KEDA scales on CPU, with no Kafka lag trigger and no TriggerAuthentication
What Stays the Same
- Secrets: the chart creates none. The Kafka SASL secret comes from wherever your deployment already supplies it
- Node placement: set the chart's
nodeSelectorandtolerationsto match your existing pool
What Changes
| Element | Before | After |
|---|---|---|
| Chart source | helm.vector.dev v0.42.1 | The thin chart each dfe-transform-vector release publishes, on scalo-service |
| Image | timberio/vector:0.48.0-debian | ghcr.io/hyperi-io/dfe-transform-vector |
| Workload type | StatefulSet | Deployment |
| Health endpoint | /health on :8686 | /livez, /readyz on :9090, beside /metrics |
| Metrics | Vector native on :9090 | Wrapper + merged Vector on :9090 |
| Config format | Full Vector YAML (customConfig) | Big-dial config (source/sink/transforms) |
| Transform delivery | Inline VRL in customConfig | YAML files in transforms.dir or listed in transforms.files. The chart has no init container or download step: bake the files into your image or mount them at that path |
| DAG wiring | Manual (inline in values) | Auto-wired by wrapper |
| Hot-reload | Not supported | Poll-based file watcher + SIGHUP |
| Crash recovery | K8s pod restart only | Wrapper restarts Vector with backoff |
Cutover Procedure
Step 1: Prepare Pipeline Values
For each existing Vector values file, write a dfe-transform-vector values file in the big-dial format above.
Step 2: Deploy in Parallel
Run both releases at once. The new pipeline uses a different consumer group ID, so it reads from the same source topic independently without affecting the existing pipeline.
Step 3: Validate
- Compare output topic records between old and new pipelines
- Monitor metrics: throughput, latency, error rates
- Check health endpoints respond correctly
- Verify KEDA scaling behaviour
Step 4: Switch Traffic
Once validated:
- Scale down old pipeline replicas to 0
- Update downstream consumers to read from new output topic (if topic name changed)
- Monitor for 24-48 hours
- Remove the old Vector release and its values file