2 min read | by Jordi Prats
When it comes into configuring a helm chart using terraform we can configure it's values in two different ways: By using set or by pushing a template with it's values. Let's take a look:
Maybe the more straightforward way is by simply setting the variables to it's value using a set block like follows:
resource "helm_release" "datadog" { name = "datadog" repository = "https://helm.datadoghq.com" chart = "datadog" version = "2.10.1" timeout = 600 namespace = var.namespace set { name = "datadog.site" value = var.datadog_site } }
Even though it's a nice way for setting a handful of values, as we need to push more values the terraform code becomes messier. Pushing a values.yaml template with the variables we want to set (or transform) is just as easy as setting a value using set:
resource "helm_release" "datadog" { name = "datadog" repository = "https://helm.datadoghq.com" chart = "datadog" version = "2.10.1" timeout = 600 namespace = var.namespace values = [ templatefile("${path.module}/datadog.yaml", { DATADOG_SITE = var.datadog_site, }) ] }
The template file will have to contain the values that the helm chart expects in yaml format. We can set variable using the ${} syntax. For example:
datadog: apiKey: ${DATADOG_SITE}
Posted on 25/03/2021