Introduction of customConfig Helm option and deprecation notice for TOML based config keys
Configure Vector directly through your Helm values.yaml without having to converting to TOML
With the release of Vector 0.15.0, we have introduced a new method of configuring Vector through Helm. This new method uses YAML configuration files, and in a coming release will become the default configuration method.
The new customConfig key will take precedence over the existing configuration options, if customConfig is
set then no default configurations will be rendered.
Upgrade Guide
Breaking: updated container args
The argument passed to Vector has been changed to --config-dir which will load any TOML, YAML, or JSON
files added to the “/etc/vector” directory.
If you have been including files that should not be loaded by Vector as configuration you should move them into a separate directory or into a sub-directory of “etc/vector”.
globalOptions and logSchema
Any global options can be moved directly
into the customConfig key and converted into snake-case.
If you had the default dataDir and logSchema values, include:
customConfig:
data_dir: "/vector-data-dir"
log_schema:
host_key: host
message_key: message
source_type_key: source_type
timestamp_key: timestamp
...
vectorApi
Vector API options can be moved as is under a customConfig.api key.
The extraContainerPorts or service key should be used to expose the port configured in customConfig.
If you had vectorApi enabled, include:
customConfig:
...
api:
enabled: true
address: 0.0.0.0:8686
playground: true
...
kubernetesLogsSource
The vector-agent chart will continue to mount the hostPaths required to access Pod logs.
If you had kubernetesLogsSource enabled, include:
customConfig:
...
sources:
...
kubernetes_logs:
type: kubernetes_logs
...
vectorSource
The service key should be used to expose the port configured in customConfig.
If you had vectorSource enabled, include:
customConfig:
...
sources:
...
vector:
type: vector
address: 0.0.0.0:9000
...
service:
ports:
- name: http
port: 9000
protocol: TCP
targetPort: 9000
vectorSink
If you had vectorSink enabled, include:
customConfig:
...
sinks:
...
vector_sink:
type: vector
inputs: ["kubernetes_logs"]
address: vector:9000
...
internalMetricsSource
If you had internalMetricsSource enabled, include:
customConfig:
...
sources:
...
internal_metrics:
type: internal_metrics
...
hostMetricsSource
The vector-agent chart will continue to set the PROCFS_ROOT and SYSFS_ROOT environment variables,
as well as mount the required hostPaths.
If you had hostMetricsSource enabled, include:
customConfig:
...
sources:
...
host_metrics:
type: host_metrics
filesystem:
devices:
excludes: ["binfmt_misc"]
filesystems:
excludes: ["binfmt_misc"]
mountPoints:
excludes: ["*/proc/sys/fs/binfmt_misc"]
...
prometheusSink
The extraContainerPorts key should be used to expose the port configured in customConfig.
The prometheusSink.podMonitor key has been moved to a top level key and can be accessed directly at
podMonitor. The addPodAnnotations option has been removed in favor setting the required annotations
with the podAnnotations key.
If you had prometheusSink enabled, include:
customConfig:
...
sinks:
...
prometheus_sink:
type: prometheus_exporter
inputs: ["host_metrics", "internal_metrics"]
address: 0.0.0.0:9090
...
extraContainerPorts:
- name: http
port: 9090
protocol: TCP
targetPort: 9090
Using customConfig
The customConfig key is mutually exclusive with the now deprecated configuration
keys, if any values are provided to customConfig any pre-generated config we provide
by default will not be templated. Please review the sections above to see example
conversions between the deprecated keys and the new customConfig based options.
With customConfig a Vector configuration can be provided in raw YAML and is passed
through a tpl function to allow for the evaluation of Helm templates contained within.
Below is an example of values using customConfig and templating.
customConfig:
data_dir: "/custom-data-dir"
healthchecks:
enabled: true
require_healthy: true
api:
enabled: true
address: "0.0.0.0:{{ with index .Values.service.ports 0 }}{{ .port }}{{ end }}"
playground: false
sources:
internal_logs:
type: internal_logs
internal_metrics:
type: internal_metrics
kubernetes_logs:
type: kubernetes_logs
glob_minimum_cooldown_ms: 1000
ingestion_timestamp_field: ingestion_timestamp
statsd_metrics:
type: statsd
address: "0.0.0.0:{{ with index .Values.service.ports 1 }}{{ .port }}{{ end }}"
mode: tcp
transforms:
sample:
type: sample
inputs: ["*_logs"]
rate: 20
sinks:
datadog_logs:
type: datadog_logs
inputs: ["sample"]
compression: gzip
default_api_key: "${DATADOG_API_KEY}"
encoding:
codec: json
datadog_metrics:
type: datadog_metrics
inputs: ["*_metrics"]
api_key: "${DATADOG_API_KEY}"
service:
enabled: true
ports:
- name: api
port: 8686
protocol: TCP
targetPort: 8686
- name: statsd
port: 8000
protocol: TCP
targetPort: 8000