'ArgoCD bootstrapping with terraform in Azure Pipeline

I am trying to deploy ArgoCD and applications located in subfolders through Terraform in an AKS cluster.

This is my Folder structure tree:

I'm using app of apps approach, so first I will deploy ArgoCD (this will manage itself as well) and later ArgoCD will let me SYNC the cluster-addons and application manually once installed.

apps
   cluster-addons
      AKV2K8S
      Cert-Manager
      Ingress-nginx
   application
      application-A
argocd
   override-values.yaml
   Chart

When I run the command "helm install ..." manually in the AKS cluster everything is installed fine. ArgoCD is installed and later when I access ArgoCD I see that rest of applications are missing and I can sync them manually.

However, If I want to install it through Terraform only ArgoCD is installed but looks like it does not "detect" the override_values.yaml file:

i mean, ArgoCD and ArgoCD application set controller are installed in the cluster but ArgoCD does not "detect" the values.yaml files that are customized for my AKS cluster. If I run "helm install" manually on the cluster everything works but not through Terraform

resource "helm_release" "argocd_applicationset" {
  name       = "argocd-applicationset"
  repository = https://argoproj.github.io/argo-helm
  chart      = "argocd-applicationset"
  namespace  = "argocd"
  version    = "1.11.0"
}

resource "helm_release" "argocd" {
  name       = "argocd"
  repository = https://argoproj.github.io/argo-helm
  chart      = "argo-cd"
  namespace  = "argocd"
  version    = "3.33.6"
  values = [
    "${file("values.yaml")}"
  ]

values.yaml file is located in the folder where I have the TF code to install argocd and argocd applicationset.

I tried to change the name of the file" values.yaml" to "override_values.yaml" but same issue.

I have many things changed into the override_values.yaml file so I cannot use "set" inside the TF code...

Also, I tried adding:

 values = [
    "${yamlencode(file("values.yaml"))}"
  ]

but I get this error in "apply" step in the pipeline:

error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {} "argo-cd:\r\n  ## ArgoCD configuration\r\n  ## Ref: https://github.com/argoproj/argo-cd\r\n

Probably because is not a JSON file? It does make sense to convert this file into a JSON one?

Any idea if I can pass this override values yaml file through terraform?

If not, please may you post a clear/full example with mock variables on how to do that using Azure pipeline?

Thanks in advance!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source