Edge Delta Agent Helm Values

Optional values for Installing Edge Delta using Helm.

Overview

Helm values are variables used in Helm charts. They are defined in a values.yaml file within the chart. These values are used to provide customizable parameters that can be set at the time of deployment or upgrade of a Helm chart. When you install a Helm chart, you can override these default values with your own via the command line, a custom YAML file, or CI/CD pipelines. Helm values define the settings for Kubernetes resources in the manifest files (like Deployment, Service, ConfigMap, etc.) that Helm will apply to the cluster. They are for configuring the deployment itself, such as replicas, image tags, resource limits, volumes, ingress rules, etc.

See here for environment variables.

Helm Values

To view the default Helm values, update the Edge Delta chart then show values:

helm repo update
helm show values edgedelta/edgedelta

The following table lists the values variables that you can customize:

Variable Description Examples
aggregatorProps.enabled Configures whether the aggregator agent is added to the deployment. Agents are deployed as daemonset. If enabled, an extra aggregator agent is deployed to collect and aggregate metrics. false
aggregatorProps.port The port that the agents will use to communicate with the aggregator. 9191
aggregatorProps.serviceDNSSuffix Used to construct endpoint for aggregator agent service so that processor agents can communicate with aggregator. Default value is “svc.cluster.local”. Final endpoint looks like this: http://ed-aggregator-svc.my-namespace.svc.cluster.local:9191 svc.cluster.local
aggregatorProps.storageClassName The aggregator agent needs a small amount of disk space to persist some internal source related information to be able to work smoothly after restarts and upgrades. If your k8s cluster has specific storage classes you can set the storageClassName accordingly. slow
annotations Custom annotations that can be added to the pods or other Kubernetes objects created by this Helm chart.
apiKey A plaintext key used to access the Edge Delta Agent configuration (not recommended for production). Use either apiKey or secretApiKey.value, not both, to provide an API Key to Agent. 1a2b3c4d5e6f7g8h9i
archiverProps.DiskSize Allocate disk space for the archiver agent to persist data. 10Gi
archiverProps.enabled Enable the archiver agent. false
archiverProps.port Set the archiver agent port. 9292
archiverProps.storageClassName If your k8s cluster has specific storage classes you can set the storageClassName accordingly. slow
compactorProps.usePVC PVC allow persistence in the compactor data prior to flushing downstream. Without a persistent volume and claim the compactor will remain in the pending state and the agents will send data directly to the data destinations, which can result in slower search and recency issues. The default is false. true
dockerContainerProps Location of the remote Docker host to use. “/var/lib/docker/containers”
edCustomTags Custom tags are pipe (|) delimited key:val pairs. These are attached to all outgoing data from agent to configured destinations. cluster:prod_us_west_2_cluster|provider:aws|region:us_west_2
edSkipTlsVerify Ignore SSL/TLS certificate errors when providing a client certificate and key directly.
edSuppressionMode Configure whether to check for similar issue notifications by the agent or other agents and suppress new ones if they have already been reported.
edWorkflowPrefixes A colon-separated list of workflow prefixes to enable all matching workflows. By default, all other workflow names are enabled when edWorkflows and edWorkflowPrefixes are not configured. “billing:error”
edWorkflows A colon-separated list of workflow names to enable matching workflows. By default, all other workflow names are enabled when edWorkflows and edWorkflowPrefixes are not configured. “billing-workflow:error-workflow”
httpProxy Address to route the agent’s outbound traffic through an HTTP internal proxy. For more information on httpproxy, review this document from Golang. “http://127.0.0.1:3128”
httpRecorderProps.enabled Enable httpRecorder, a frontend layer which can consume logs with both http and tcp protocols. It is deployed as a sidecar for each ED agent. It dumps the incoming logs to filesystem (persisted via PVC) and agents grab from there. false
httpRecorderProps.image Specify the httpRecorder image and version tag. gcr.io/edgedelta/httprecorder:latest
httpRecorderProps.ingress Configure ingress for httpRecorder if the k8s cluster already has nginx + cert-manager installed. Without ingress enabled you can directly send logs within cluster using http://ed-httprecorder-svc.{namespace}.svc.cluster.local:8080 class: nginx
httpRecorderProps.port Specify the httpRecorder port. 8080
httpsProxy Address to route the agent’s outbound traffic through an HTTPS internal proxy. For more information on httpsproxy, review this document from Golang. “https://127.0.0.1:3128”
image The agent’s Docker image. Optionally override the image tag, which defaults to the chart appVersion. edgedelta/agent
noProxy Disables the proxy for requests that hit a specific destination. For more information on httpproxy, review this document from Golang. https://your-endpoint.com
nodeSelector This is a way to specify on which nodes a pod should be scheduled, based on labels on nodes. With nodeSelector: {}, no node selector is set, so the pod can be scheduled on any available node that matches other criteria.
persistingCursorProps.containerMountPath The container mount path to keep the persisting cursor state. /var/lib/edgedelta
persistingCursorProps.enabled Enables or disables the persistent cursor feature. false
persistingCursorProps.hostMountPath The host mount path to keep the persisting cursor state. /var/lib/edgedelta
priorityClassName This value can specify the priority of the pods. Higher priority pods can potentially preempt lower priority pods in times of resource scarcity.
profilerPort Specify the port to use if you install Edge Delta with a profiler to monitor CPU and memory statistics. Alternatively you can use Prometheus with its dedicated endpoint. 6060
promPort Specify the metrics endpoint port number that Prometheus can use to scrape metrics. 8087
resources.limits.cpu The maximum CPU usage limit for the agent pod. 1000m
resources.limits.memory The maximum memory usage limit for the agent pod. 2048Mi
resources.requests.cpu The minimum requested CPU for the agent pod. 200m
resources.requests.memory The minimum requested memory for the agent pod. 256Mi
secretApiKey.key The reference to use to create the key part of a key/value pair stored in a Kubernetes secret when the secretApiKey.value is passed in. ed-api-key, username, password
secretApiKey.name The name to use for the Kubernetes secret object when the secretApiKey.value is passed in. ed-api-key
secretApiKey.value The value part of a key/value pair that is saved in a Kubernetes secret. Passing in this parameter saves it in in the secret rather than the values file, and it uses the name and key specified by secretApiName and secretApiKey. Use either apiKey or secretApiKey.value, not both, to provide an API Key to Agent. 1a2b3c4d5e6f7g8h9i
serviceMonitor Enable service monitor to scrape Prometheus metrics from agents.
storePort A port number to expose agent metrics storage. 6062
tolerations Tolerations allow a pod to be scheduled on nodes with matching taints. It’s a way to ensure that pods are scheduled on appropriate nodes. The default chart setting tolerations: {}, indicates that there are no specific tolerations set, meaning the pods might not be able to be scheduled on tainted nodes unless tolerations are defined. For example, if certain nodes are dedicated for certain purposes or have specific hardware, administrators may apply taints to them, and only pods with the appropriate tolerations will be scheduled there.
updateStrategy This dictates how updates to the application are rolled out. The updateStrategy.type: RollingUpdate strategy means that updates will roll out one pod at a time, rather than taking the entire application down and updating all at once. This provides high availability during updates. Specifically, updateStrategy.rollingUpdate.maxUnavailable: 1 means that during the update, at most one pod can be unavailable.
volumes Specify the volumes to make available to a pod. This includes the volume type such as configmap or emptyDir. .spec.volumes:
- name: cache-volume
emptyDir:
sizeLimit: 500Mi
volumeMounts Specify where to mount the volumes listed in the volumes parameter into containers. .spec.containers[*].volumeMounts:
- mountPath: /cache
name: cache-volume

Using Values

Assume this is the default helm installation command for Edge Delta:

helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 --set secretApiKey.value=123456789 -n edgedelta --create-namespace

Helm values can be set and overridden in a Helm chart in several ways:

Using the –set flag:

You can set individual values directly on the command line with the --set flag when you install or upgrade a Helm chart. This is useful for quick adjustments without the need for a separate file.

helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 --set serviceMonitor.enabled=true --set secretApiKey.value=123456789 -n edgedelta --create-namespace

Using a variable file with -f or –values:

You can create a YAML file with the values you want to set or override and then specify this file using the -f or --values flag during Helm chart installation or upgrade.

helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 -f custom-values.yaml --set secretApiKey.value=123456789 -n edgedelta --create-namespace

Alternatively, you can use multiple values files to layer configurations:

helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 --set serviceMonitor.enabled=true --set secretApiKey.value=123456789 -n edgedelta --create-namespace -f base-values.yaml -f override-values.yaml

Using –set-file:

If you have a large piece of data that you want to set, such as a configuration file, you can use the –set-file flag. The data from the specified file will be set as a value for the indicated variable.

helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 --set-file configContent=my-config.yaml --set secretApiKey.value=123456789 -n edgedelta --create-namespace

Using –set-string:

This works similarly to –set but forces the value to be treated as a string, which is important when dealing with values that the YAML parser might otherwise interpret as a boolean or a number.

helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 --set-string flagValue="true" --set secretApiKey.value=123456789 -n edgedelta --create-namespace

Using environment variables with the env (or –env) flag:

In some scenarios, you might have to use environment variables for sensitive data that you don’t want to pass directly via command line or stored in files. This is not directly supported by Helm but can be worked around with shell commands.

export API_KEY="123456789"
helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.99 --set secretApiKey.value=$API_KEY -n edgedelta --create-namespace

Manually editing values.yaml:

For Helm charts that are stored locally or have been downloaded, you can directly edit the values.yaml file by hand and then install or upgrade the chart. This method isn’t common for packaged Helm charts but can be used during chart development.

Always remember to use sensitive data handling practices when dealing with secrets or sensitive configurations. In production environments, it is best to store such data in secure storage and reference it using Kubernetes secrets.

Precedence

Helm merges the values together using the following order of precedence. It goes from the most specific (direct command line overrides) to the least specific (the defaults in the chart’s values.yaml). If there are conflicting settings, the source with the highest precedence is chosen.

  1. Command Line –set Parameter: Values set with –set on the command line take the highest precedence. If you use multiple –set options, the last one will take precedence. It can be overridden with successive –set commands:
--set key1=value1 --set key2=value2
  1. Command Line –set-file Parameter: This sets a value from a given file and takes precedence after direct –set parameters.

  2. Command Line –set-string Parameter: Just like –set, but treated as a string. The precedence of –set-string parameters relative to –set and –set-file depends on their order on the command line.

  3. Value Files Specified with -f or –values: If values are supplied using -f or –values options, each file specified will overlay on the previous one:

-f myvalues.yaml -f override.yaml

In this example, override.yaml would take precedence over values in myvalues.yaml.

  1. Values File from the Chart References (values.yaml): This is the values.yaml file included with the Helm chart by default. Any values that are not overridden by the above methods will have the defaults from this file.

  2. Chart Dependencies: For Helm charts that include dependencies, the default values from those dependency charts are applied first (lowest priority), before values from the main chart’s values.yaml.