Helm Kubernetes es el gestor de paquetes estándar para desplegar aplicaciones en Kubernetes mediante charts reutilizables. En esta guía en 7 pasos aprenderás a instalar Helm, añadir repositorios, desplegar tu primer release y gestionar actualizaciones y rollbacks, con ejemplos listos para usar en tu clúster. Si ya usas GitOps, puedes combinar Helm con ArgoCD Kubernetes; para backups, revisa Velero Kubernetes. Más guías en nuestra categoría Kubernetes.
¿Qué es Helm Kubernetes?
Helm es la herramienta estándar para empaquetar aplicaciones en Kubernetes en charts (plantillas YAML con valores parametrizables) y desplegarlas como releases. Helm Kubernetes simplifica la instalación de stacks complejos: bases de datos, monitoreo (Prometheus, Grafana), controladores de ingress y aplicaciones multicomponente, con un solo comando. La documentación oficial de Helm describe la instalación del CLI; el proyecto está en GitHub (helm/helm). Desde Helm 3 no existe Tiller; todo es cliente y se comunica directamente con la API de Kubernetes. Usar Helm Kubernetes en tu flujo reduce errores, tiempo de despliegue y facilita las actualizaciones y rollbacks. Casos de uso típicos: desplegar un stack de monitoreo, una aplicación con varios microservicios, o plantillas internas que tu equipo reutiliza en distintos entornos.
Arquitectura de Helm Kubernetes
En una arquitectura con Helm Kubernetes solo necesitas el CLI de Helm en tu máquina y un clúster Kubernetes accesible vía kubeconfig. Helm no instala ningún componente en el clúster; cuando ejecutas helm install, el CLI renderiza las plantillas del chart con los valores indicados y envía los manifiestos resultantes a la API de Kubernetes (creando Deployments, Services, ConfigMaps, etc.). Los repositorios de charts son servidores HTTP que sirven archivos index.yaml y los paquetes de charts (tgz); Bitnami, la CNCF y muchos proyectos mantienen repos públicos. Un chart contiene una carpeta con Chart.yaml (metadatos), values.yaml (valores por defecto) y templates/ (plantillas Go). Cada instalación es un release con un nombre único por namespace; el historial de revisiones permite hacer rollback a versiones anteriores. Combinar Helm Kubernetes con GitOps (ArgoCD, Flux) permite que los despliegues se basen en el estado declarado en Git.
Requisitos para usar Helm Kubernetes
Necesitas kubectl instalado y configurado con acceso a un clúster (local como minikube/kind, o remoto). Helm usa el kubeconfig por defecto. No hace falta que el clúster tenga ningún componente adicional; el gestor solo requiere el binario helm en tu máquina. Si quieres monitorizar lo que despliegas, puedes seguir nuestra guía de Prometheus Kubernetes.
Paso 1: Instalar Helm
La forma más rápida en Linux/macOS es el script oficial (descarga la última versión estable desde get.helm.sh):
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4
chmod 700 get_helm.sh
./get_helm.sh
En macOS con Homebrew: brew install helm. En Ubuntu/Debian puedes usar el repositorio Apt que mantiene la comunidad (ver Installing Helm). Comprueba la instalación:
helm version
Paso 2: Añadir un repositorio de charts
Helm Kubernetes trabaja con repositorios remotos. Añade Bitnami (charts muy usados) y actualiza la lista:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Lista repositorios con helm repo list. El repositorio oficial de Helm está en helm/charts (archived); para aplicaciones actuales se usan Bitnami, el repo de aplicaciones de la CNCF y los de cada proyecto.
Paso 3: Buscar e instalar un chart (primer release)
Busca charts disponibles y crea tu primer release en un namespace:
helm search repo bitnami/nginx
kubectl create namespace demo
helm install mi-nginx bitnami/nginx --namespace demo
helm install <release-name> <chart> [flags] despliega el chart; el nombre del release es único por namespace. Comprueba el estado con helm list -n demo y los pods con kubectl get pods -n demo. Si el chart expone un servicio (LoadBalancer o NodePort), anota la IP o el puerto para acceder a la aplicación. Con esto ya tienes un despliegue funcional usando Helm Kubernetes. Para charts con dependencias (subcharts), Helm las instala en el mismo release; puedes ver la estructura con helm get manifest mi-nginx -n demo y comprobar qué recursos se han creado en el clúster.
Paso 4: Personalizar valores (values)
La mayoría de charts aceptan valores vía --set o un fichero values.yaml. Ver valores por defecto:
helm show values bitnami/nginx > nginx-values.yaml
# Editar nginx-values.yaml y luego:
helm upgrade mi-nginx bitnami/nginx -n demo -f nginx-values.yaml
helm upgrade aplica cambios; si el release no existía, hace un install. Así puedes ajustar réplicas, recursos, ingress o servicio sin tocar el chart. Es una de las ventajas de usar Helm en producción.
Paso 5: Actualizar y hacer rollback con Helm Kubernetes
Para actualizar a una nueva versión del chart o de tus values:
helm repo update
helm upgrade mi-nginx bitnami/nginx -n demo -f nginx-values.yaml
Si algo falla, haz rollback al revision anterior:
helm history mi-nginx -n demo
helm rollback mi-nginx 1 -n demo
Helm guarda el historial de revisiones por release; el rollback es nativo y muy útil en entornos con muchos releases.
Paso 6: Desinstalar un release
Para eliminar el release y los recursos que creó el chart (según las políticas del chart):
helm uninstall mi-nginx -n demo
Con --keep-history se mantiene el historial por si quieres hacer rollback después. Por defecto todo se borra.
Paso 7: Crear tu propio chart (opcional)
Genera la estructura de un chart nuevo y edita plantillas y values:
helm create mi-app
# Editar mi-app/values.yaml y mi-app/templates/
helm install mi-app ./mi-app -n demo
Los templates usan la sintaxis de Helm (Go templates). Con esto puedes empaquetar tus propias aplicaciones y reutilizarlas en varios entornos. Combinar Helm con un flujo GitOps (por ejemplo ArgoCD) permite despliegues declarativos y auditables.
Troubleshooting Helm Kubernetes
Error «release already exists»: El nombre del release debe ser único en el namespace. Usa otro nombre o desinstala antes con helm uninstall <release> -n <ns>. Chart no encontrado: Ejecuta helm repo update y comprueba con helm search repo <nombre> que el chart existe. Los pods no arrancan tras install: Revisa kubectl get pods -n <ns> y kubectl describe pod; suele deberse a valores incorrectos (imagen, recursos, PVCs). Upgrade falla o deja el release en estado raro: Usa helm rollback <release> <revision> -n <ns> para volver a la revisión anterior. Helm no conecta al clúster: Verifica kubectl cluster-info y que el kubeconfig apunta al contexto correcto. La FAQ oficial de Helm y los logs de Kubernetes (kubectl logs) ayudan a diagnosticar problemas con Helm Kubernetes.
Buenas prácticas con Helm Kubernetes
Usa nombres de release descriptivos y estables (evita cambiar el nombre entre upgrades). Crea namespaces por entorno o por aplicación y mantén los values.yaml en control de versiones (Git). Para entornos compartidos, fija versiones de chart con --version en lugar de usar siempre latest. Revisa los valores por defecto con helm show values antes de instalar para evitar sorpresas de recursos o permisos. Si despliegas en producción, prueba antes en un clúster de staging; el rollback de Helm Kubernetes es rápido pero es mejor no necesitarlo. Documenta los values que usas por entorno (dev/prod) y considera hooks de Helm para tareas pre o post instalación cuando sea necesario.
Resumen de comandos Helm Kubernetes
helm repo add / update / list— gestionar repositorioshelm search repo <nombre>— buscar chartshelm install <release> <chart> -n <ns>— instalarhelm upgrade <release> <chart> -n <ns> -f values.yaml— actualizarhelm list -n <ns>— listar releaseshelm rollback <release> <revision> -n <ns>— rollbackhelm uninstall <release> -n <ns>— desinstalar
FAQ sobre Helm Kubernetes
¿Necesito Tiller o algún componente en el clúster?
No. Desde Helm 3 (y Helm 4) solo hace falta el CLI y acceso a la API de Kubernetes; Helm no instala nada en el clúster más allá de los recursos que definen los charts.
¿Puedo usar Helm con ArgoCD o Flux?
Sí. ArgoCD y Flux pueden renderizar y aplicar charts de Helm; es un patrón muy común para GitOps.
¿Qué versión de Helm uso?
La estable actual es Helm 4.x; el script get-helm-4 instala la última 4. Comprueba con helm version. La documentación de Helm está actualizada para la versión actual.
¿Cómo actualizo Helm?
Vuelve a ejecutar el script de instalación o usa el gestor de paquetes (brew upgrade helm, apt upgrade helm). No afecta a los releases ya desplegados; solo al CLI.
¿Puedo usar varios values por entorno?
Sí. Mantén un values-dev.yaml y un values-prod.yaml y pasa el fichero con -f en helm install o helm upgrade. Puedes combinar varios ficheros con varias -f.
Con estos 7 pasos tienes la base para usar Helm Kubernetes en tu día a día: instalar, añadir repos, desplegar, personalizar, actualizar, hacer rollback y desinstalar. Para profundizar en costes en el clúster, echa un vistazo a OpenCost Kubernetes y al resto de artículos de la categoría Kubernetes.
