Despliegue continuo en Kubernetes con Helm

Software developing

Despliegue continuo en Kubernetes con Helm

Categoría: Kubernetes

Helm es el gestor de paquetes de Kubernetes. Aprende a usarlo para automatizar despliegues continuos, gestionar configuraciones y mantener versiones de tus aplicaciones en clústeres.


¿Qué es Helm y por qué deberías usarlo?

Helm es una herramienta que facilita el despliegue de aplicaciones en Kubernetes mediante plantillas reutilizables llamadas charts. Si Docker es el contenedor y Kubernetes el orquestador, Helm es el equivalente a un sistema de gestión de paquetes como apt o npm.

Con Helm puedes:

  • Versionar y reutilizar configuraciones de despliegue
  • Automatizar despliegues continuos en entornos como staging y producción
  • Reducir errores humanos al evitar duplicar ficheros YAML
  • Hacer rollback a versiones anteriores si algo falla

Paso 1: Instalar Helm

Helm puede instalarse fácilmente desde el sitio oficial o con Homebrew:

brew install helm
helm version

Paso 2: Crear un Chart personalizado

Usa el comando helm create para generar la estructura base de un chart:

helm create mi-app

Esto generará una estructura como esta:

mi-app/
├── charts/
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── ingress.yaml
├── values.yaml
└── Chart.yaml

El archivo values.yaml contiene los valores de configuración que puedes parametrizar. El resto de archivos usan la sintaxis de Go templates para interpolar esos valores.

Paso 3: Instalar el chart en Kubernetes

Si ya tienes tu clúster de Kubernetes funcionando (minikube, kind, GKE, EKS, etc.), puedes instalar tu chart con:

helm install mi-app ./mi-app

También puedes pasar valores personalizados desde otro archivo:

helm install mi-app ./mi-app -f values.prod.yaml

Paso 4: Actualizar la app y hacer despliegues continuos

Cuando actualices el chart o tus valores, solo necesitas ejecutar:

helm upgrade mi-app ./mi-app

Esto aplica los cambios sin eliminar el release actual, lo que permite un ciclo de despliegue continuo sin downtime (siempre que tus containers estén correctamente configurados con probes y estrategias de rolling update).

Paso 5: Automatizar con GitHub Actions

Puedes usar GitHub Actions para desplegar automáticamente cuando se haga push a main:

name: Deploy to Kubernetes

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: azure/setup-helm@v3
      - run: |
          helm upgrade --install mi-app ./mi-app -f values.prod.yaml

Este workflow presupone que tienes acceso configurado a tu clúster mediante un kubeconfig seguro almacenado como secreto en el repositorio.

Consejos avanzados

  • ✅ Usa helm diff para previsualizar los cambios antes de aplicarlos
  • 📦 Publica tus charts en tu propio repositorio Helm privado
  • 🧪 Integra tests de despliegue y validación de templates
  • 🚀 Combina Helm con ArgoCD para despliegue continuo declarativo

Conclusión

Helm se ha convertido en el estándar de facto para desplegar aplicaciones en Kubernetes. Su potencia reside en la reutilización de plantillas, la capacidad de rollback, y su integración natural con pipelines de CI/CD. Si trabajas con Kubernetes, dominar Helm es casi obligatorio.

Con unas pocas líneas de configuración puedes automatizar todo el ciclo de despliegue, desde desarrollo hasta producción.

Compartir
Facebook
Twitter
Email
Imprimir

Contacto

¿Tienes alguna duda, propuesta o simplemente quieres saludar? Estoy encantado de leerte.