Configure Grafana Alloy on Kubernetes
This page describes how to apply a new configuration to Alloy when running on Kubernetes with the Helm chart. It assumes that:
- You have installed Alloy on Kubernetes using the Helm chart.
- You already have a Alloy configuration that you want to apply to your Helm chart installation.
Refer to Collect and forward data for information about configuring Alloy to collect and forward data.
Configure the Helm chart
To modify Alloy’s Helm chart configuration, perform the following steps:
Create a local
values.yamlfile with a Helm chart configuration.You can use your own copy of the values file or download a copy of the default
values.yaml.Make changes to your
values.yamlto customize settings for the Helm chart.Refer to the inline documentation in the default
values.yamlfor more information about each option.
Run the following command in a terminal to upgrade your Alloy installation:
helm upgrade --namespace <NAMESPACE> <RELEASE_NAME> grafana/alloy -f <VALUES_PATH>Replace the following:
<NAMESPACE>: The namespace you used for your Alloy installation.<RELEASE_NAME>: The name you used for your Alloy installation.<VALUES_PATH>: The path to your copy ofvalues.yamlto use.
Kustomize considerations
If you are using Kustomize to inflate and install the Helm chart, be careful when using a configMapGenerator to generate the ConfigMap containing the configuration.
By default, the generator appends a hash to the name and patches the resource mentioning it, triggering a rolling update.
This behavior is undesirable for Alloy because the startup time can be significant, for example, when your deployment has a large metrics Write-Ahead Log. You can use the Helm chart sidecar container to watch the ConfigMap and trigger a dynamic reload.
The following is an example snippet of a kustomization that disables this behavior:
configMapGenerator:
- name: alloy
files:
- config.alloy
options:
disableNameSuffixHash: trueConfigure Alloy
This section describes how to modify the Alloy configuration, which is stored in a ConfigMap in the Kubernetes cluster. There are two methods to perform this task.
Method 1: Modify the configuration in the values.yaml file
Use this method if you prefer to embed your Alloy configuration in the Helm chart’s values.yaml file.
Modify the configuration file contents directly in the
values.yamlfile:alloy: configMap: content: |- // Write your Alloy config here: logging { level = "info" format = "logfmt" }Run the following command in a terminal to upgrade your Alloy installation:
helm upgrade --namespace <NAMESPACE> <RELEASE_NAME> grafana/alloy -f <VALUES_PATH>Replace the following:
<NAMESPACE>: The namespace you used for your Alloy installation.<RELEASE_NAME>: The name you used for your Alloy installation.<VALUES_PATH>: The path to your copy ofvalues.yamlto use.
Method 2: Create a separate ConfigMap from a file
Use this method if you prefer to write your Alloy configuration in a separate file.
Write your configuration to a file, for example,
config.alloy.// Write your Alloy config here: logging { level = "info" format = "logfmt" }Create a ConfigMap called
alloy-configfrom the above file:kubectl create configmap --namespace <NAMESPACE> alloy-config "--from-file=config.alloy=./config.alloy"Replace the following:
<NAMESPACE>: The namespace you used for your Alloy installation.
Modify Helm Chart’s configuration in your
values.yamlto use the existing ConfigMap:alloy: configMap: create: false name: alloy-config key: config.alloyRun the following command in a terminal to upgrade your Alloy installation:
helm upgrade --namespace <NAMESPACE> <RELEASE_NAME> grafana/alloy -f <VALUES_PATH>Replace the following:
<NAMESPACE>: The namespace you used for your Alloy installation.<RELEASE_NAME>: The name you used for your Alloy installation.<VALUES_PATH>: The path to your copy ofvalues.yamlto use.



