terraform-provider-helm: Helm release gets stuck in the refreshing phase on plan/apply

Terraform Version

Terraform v0.12.24

Helm Provider Version

v1.1.1 & v1.1.0

Platform

macOS Catalina Version 10.15.4 (19E266)

Affected Resource(s)

  • helm_release

Terraform Configuration Files

resource "helm_release" "app" {
  for_each = local.keyed_charts
  name = each.value["name"]
  namespace = each.value["namespace"]
  repository = each.value["repository"]
  chart = each.value["chart"]
  max_history = 5
  dependency_update = true
  timeout = 360  # 6 minutes

  values = [
    yamlencode(each.value["values"])
  ]
}

Debug Output

module.environment.helm_release.app["development-api:api-backend"]: Refreshing state... [id=api-backend]
2020-04-02T13:06:33.107+0530 [DEBUG] plugin.terraform-provider-helm_v1.1.0_x4: 2020/04/02 13:06:33 [DEBUG] got release &{api-backend 0xc000656380 0xc000597f40 map[apiBackend:map[config:map[applicationOverrideYaml:REDIS_URL: 'redis-master.shared.svc.cluster.local:6379/1']] version:1] ---

[[Full generated yaml definitions for this chart]]

2020-04-02T13:06:33.110+0530 [DEBUG] plugin.terraform-provider-helm_v1.1.0_x4:  [] 1 development-api}
2020-04-02T13:06:33.110+0530 [DEBUG] plugin.terraform-provider-helm_v1.1.0_x4: 2020/04/02 13:06:33 [INFO] Successfully initialized config
2020/04/02 13:06:36 [TRACE] dag/walk: vertex "module.environment.provider.helm (close)" is waiting for "module.environment.helm_release.app"
2020/04/02 13:06:36 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.provider.helm (close)"
2020/04/02 13:06:37 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.helm_release.app[\"development-api:api-backend\"]"
2020/04/02 13:06:41 [TRACE] dag/walk: vertex "module.environment.provider.helm (close)" is waiting for "module.environment.helm_release.app"
2020/04/02 13:06:41 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.provider.helm (close)"
2020/04/02 13:06:42 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.helm_release.app[\"development-api:api-backend\"]"
2020/04/02 13:06:46 [TRACE] dag/walk: vertex "module.environment.provider.helm (close)" is waiting for "module.environment.helm_release.app"
2020/04/02 13:06:46 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.provider.helm (close)"
2020/04/02 13:06:47 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.helm_release.app[\"development-api:api-backend\"]"
2020/04/02 13:06:51 [TRACE] dag/walk: vertex "module.environment.provider.helm (close)" is waiting for "module.environment.helm_release.app"
2020/04/02 13:06:51 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.provider.helm (close)"
2020/04/02 13:06:52 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.helm_release.app[\"development-api:api-backend\"]"
2020/04/02 13:06:56 [TRACE] dag/walk: vertex "module.environment.provider.helm (close)" is waiting for "module.environment.helm_release.app"
2020/04/02 13:06:56 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.provider.helm (close)"
2020/04/02 13:06:57 [TRACE] dag/walk: vertex "root" is waiting for "module.environment.helm_release.app[\"development-api:api-backend\"]"

Expected Behavior

It should refresh the state correctly and proceed with the next stage.

Actual Behavior

Terraform stuck on refreshing phase. No way to move forward unless I run with -refresh=false terraform flag.

Steps to Reproduce

  1. terraform apply or terraform plan or terraform refresh

Important Factoids

  • Works without an issue on v1.0.0. So, seems to be a regression starting from v1.1.0

  • Using AWS EKS

  • Helm command gives expected result

    $ helm list --namespace development-api                                                                                                                                                                                                                     1 ↵
    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    api-backend     development-api 1               2020-04-01 23:29:52.204583 +0530 IST    deployed        api-backend-1.0.0       1.0.0      
    
    $ helm status api-backend --namespace development-api
    NAME: api-backend
    LAST DEPLOYED: Wed Apr  1 23:29:52 2020
    NAMESPACE: development-api
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 26
  • Comments: 16 (3 by maintainers)

Most upvoted comments

same thing for me, downgrading to 1.0.0 seem to work for me

same thing for me, downgrading to 1.0.0 seem to work for me

Okay that works for me too. Thanks for the tip @oba11

version 1.0.0 fixed it for me too.

Something like this: provider "helm" { version = "= 1.0.0" kubernetes { config_path = "~/somewhere/kubeconfig.yaml" config_context = "k8s-clustername" } }

Can confirm this issue still exists in Terraform .12.25 / Helm Provider 1.2.1 against an EKS cluster on MacOS…

<edit> AND an alpine-based Docker container so contrary to one of the comments above, switching to Linux does not seem to be a workaround for me.

It seems to be related to the number of releases as I can “workaround” it (get the refresh to finish) by manually deleting releases from state and retrying.

@niranjan94 can I see the variable definition for keyed_charts? I’m going to look into how the provider traverses these data structures. Thanks!

Latest release working very well!

seems fixed for me

Same for me. All version of helm provider after 1.0.0 hungs during refreshing helm_releases(there near 15 of instances). Checked with terraform 0.12.24 and 0.12.25. MacOS 10.15.5 Public Beta 3 Here is a sample of processes stucked - Samples terraform-provider-helm_v1.1.0_x4.txt

same problem for me. Seems like the issue is visible on reaching certain amount of resources