Cómo Solucionar el Error «Unsupported block type» en Terraform con Helm Provider ≥ 2.0

Published:

Si trabajas con Terraform para gestionar tus despliegues en Kubernetes, es probable que te hayas encontrado con este error al actualizar el Helm Provider:

│ Error: Unsupported block type
│ 
│   on .terraform/modules/newrelic/provider.tf line 18, in provider "helm":
│   18:   kubernetes {
│ 
│ Blocks of type "kubernetes" are not expected here.

Este error no es un bug, sino el resultado de un cambio breaking en la versión 2.0 del Helm Provider de Terraform. Veamos exactamente qué cambió y cómo adaptar tu código.

Entendiendo el Cambio en Helm Provider 2.0

En versiones anteriores del Helm Provider (< 2.0), la configuración del cliente de Kubernetes se hacía mediante un block:

# OBSOLETO en Helm Provider ≥ 2.0
provider "helm" {
  kubernetes {
    config_path = "~/.kube/config"
  }
}

A partir de la versión 2.0, este bloque se reemplazó por un argumento que espera una configuración explícita.

Solución Paso a Paso

Paso 1: Actualizar tu Configuración del Provider Helm

Modifica tu archivo providers.tf o donde tengas definido el Helm Provider, y especificas las versiones anteriores que en mi caso es la 2.

terraform {
  required_providers {
    google = ">= 4.0"
    helm = {
      source  = "hashicorp/helm"
      version = ">= 2.0.0, < 3.0.0"
    }
  }
}

 

¿Por Qué Cambió Esto?

El cambio responde a una evolución natural en los providers de Terraform para hacerlos más consistentes. El argumento kubernetes ahora acepta los mismos atributos que el provider de Kubernetes nativo, lo que ofrece:

  • Mejor consistencia entre providers

  • Mayor flexibilidad en la configuración

  • Mantenimiento más sencillo del código

Migración de Módulos de Terceros

El problema es particularmente común con módulos de terceros como New Relic. Si el error aparece en .terraform/modules/, necesitas:

  1. Actualizar el módulo a una versión compatible con Helm 2.x

  2. Pinzar la versión en tu configuración:

module "newrelic" {
  source  = "newrelic/newrelic"
  version = "~> 3.0"  # Verificar versión compatible
  # ... resto de configuración
}

Comandos para Recuperarte del Error

# Actualizar providers
terraform init -upgrade

# Aplicar cambios
terraform apply

Conclusión

El error «Unsupported block type» con el Helm Provider es un ejemplo clásico de cómo los cambios de versión mayor en Terraform pueden romper configuraciones existentes. La solución, aunque sencilla, requiere entender la nueva sintaxis y actualizar los módulos dependientes.

Lecciones clave:

  • Siempre revisa los CHANGELOG en upgrades mayores

  • Especifica versiones exactas en entornos productivos

  • Prueba las actualizaciones en un entorno de staging primero

¿Te ha sido útil esta guía? ¿Has encontrado otros breaking changes interesantes en Terraform? ¡Comparte tu experiencia en los comentarios!

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles