mystack
mystack

Reputation: 5542

Pass values from Helmrelease to Terraform

I have a helm release file test-helm-release.yaml as given below.

apiVersion: helm.toolkit.gitops.io/v2beta1
kind: HelmRelease
metadata:
  name: "test"
  namespace: "test-system"
spec:
  chart:
    spec:
    chart: "test-environment"
    version: "0.1.10"
  values:
    key1: "value1"
    key1: "value1"
    key1: "value1"
    key1: "value1"
    gitRepository:
      url: https://github.com/test-eng/test.git
    helmRepositories:
      - name: testplatform
        url: https://test-platform/charts

While creating the helm release I can pass the values from above helm release to the new release using the below command

   chart=$(yq '.spec.chart.spec.chart' test-helm-release.yaml)
   version=$(yq '.spec.chart.spec.version' test-helm-release.yaml)
   yq '.spec.values' test-helm-release.yaml | helm upgrade --install --values - --version "$version" --namespace test-system --create-namespace test-platform "helm-repo/$chart"

Above code is working perfectly and I'm able to pass the values to the helm release using "yq" command. How I can do the same "yq" function with terraform "helm-release" and git repository data type given below.

   data "github_repository_file" "test-platform" {
     repository = "test-platform"
     branch     = "test"
    file       = "internal/default/test-helm-release.yaml"
   }

 resource "helm_release" "test-platform" {
 name = "test-platform"

 repository       = "https://test-platform/charts"
 chart            = "test-environment"
 namespace        = "test-system"
 create_namespace = true
 timeout          = 800

 lifecycle {
  ignore_changes = all
}
}

Note I cannot use "set" because i want to fetch the values form test-helm-release.yaml dynamically.Any idea how I could fetch the .spec.values alone using templatefile functio or a different way?

Upvotes: 0

Views: 428

Answers (0)

Related Questions