Capítulo 10.1 - Introducción a Helm
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender qué es Helm y por qué usarlo
- Instalar Helm
- Comprender los conceptos básicos (Charts, Releases, Repositories)
- Instalar y gestionar Charts
- Comprender las ventajas de Helm
- Utilizar los comandos básicos de Helm
Introducción
Helm es el gestor de paquetes para Kubernetes. Simplifica la instalación y gestión de aplicaciones complejas en Kubernetes.
¿Qué es Helm?
Helm es una herramienta que permite:
- Definir aplicaciones Kubernetes como paquetes reutilizables
- Instalar aplicaciones complejas con un solo comando
- Actualizar y gestionar las versiones de aplicaciones
- Compartir aplicaciones a través de repositories
Analogía: Helm es como apt para Ubuntu o npm para Node.js, pero para Kubernetes.
Conceptos Clave
Chart
Un Chart es un paquete de aplicación Kubernetes. Contiene:
- Plantillas YAML para los recursos de Kubernetes
- Archivo de valores por defecto (
values.yaml) - Metadatos (
Chart.yaml)
Release
Una Release es una instancia de un Chart desplegado en un clúster. Un mismo Chart puede instalarse varias veces con diferentes releases.
Repository
Un Repository es una colección de Charts. Puede ser local o remoto (HTTP).
Instalación
Linux/Mac
# Descargar Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Verificar
helm version
Windows
# Vía Chocolatey
choco install kubernetes-helm
# O descargar desde GitHub
# https://github.com/helm/helm/releases
Verificación
helm version
# version.BuildInfo{Version:"v3.12.0", ...}
Comandos Básicos
Agregar un Repository
# Repository Bitnami (popular)
helm repo add bitnami https://charts.bitnami.com/bitnami
# Actualizar los repositories
helm repo update
# Listar los repositories
helm repo list
Buscar Charts
# Buscar en los repositories
helm search repo nginx
# Buscar en Artifact Hub
helm search hub nginx
Instalar un Chart
# Instalación básica
helm install my-release bitnami/nginx
# Con un nombre de release personalizado
helm install web-server bitnami/nginx
# Con valores personalizados
helm install my-release bitnami/nginx -f my-values.yaml
# Con valores inline
helm install my-release bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
Listar las Releases
# Ver todas las releases
helm list
# Ver en un namespace específico
helm list -n production
# Ver todas las releases (incluyendo eliminadas)
helm list --all
Actualizar una Release
# Actualizar con nuevos valores
helm upgrade my-release bitnami/nginx -f new-values.yaml
# Actualizar a una nueva versión
helm upgrade my-release bitnami/nginx --version 15.0.0
# Rollback
helm rollback my-release 1
Eliminar una Release
# Eliminar una release
helm uninstall my-release
# Ver el historial antes de eliminar
helm history my-release
Ejemplo: Instalación de NGINX
Paso 1: Agregar el Repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Paso 2: Buscar el Chart
helm search repo nginx
Paso 3: Instalar
helm install my-nginx bitnami/nginx
Paso 4: Verificar
# Ver la release
helm list
# Ver los recursos creados
kubectl get all -l app.kubernetes.io/instance=my-nginx
# Obtener la URL
helm status my-nginx
Ventajas de Helm
1. Simplicidad
Sin Helm:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f ingress.yaml
# ... 10+ archivos
Con Helm:
helm install my-app ./my-chart
2. Gestión de Versiones
# Instalar una versión específica
helm install my-app ./my-chart --version 1.2.3
# Actualizar
helm upgrade my-app ./my-chart --version 1.3.0
# Rollback
helm rollback my-app 1
3. Reutilizabilidad
Un Chart puede ser utilizado para varios entornos:
helm install my-app-dev ./my-chart -f dev-values.yaml
helm install my-app-prod ./my-chart -f prod-values.yaml
4. Compartir
Los Charts pueden compartirse a través de repositories públicos o privados.
Estructura de un Chart
my-chart/
├── Chart.yaml # Metadatos
├── values.yaml # Valores por defecto
├── templates/ # Plantillas Kubernetes
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── charts/ # Dependencias
Comandos Útiles
Información
# Ver los valores de un Chart
helm show values bitnami/nginx
# Ver los valores de una release
helm get values my-release
# Ver el manifest generado
helm get manifest my-release
# Ver las notas
helm get notes my-release
Depuración
# Template con dry-run
helm install my-release ./my-chart --dry-run --debug
# Ver los valores calculados
helm install my-release ./my-chart --debug --dry-run
Buenas Prácticas
1. Utilizar Repositories
Preferir los repositories oficiales en lugar de Charts locales cuando sea posible.
2. Versionado
Utilizar versiones específicas en producción.
3. Values Files
Separar los valores por entorno (dev, staging, prod).
4. Testing
Probar los Charts con --dry-run antes de la instalación.
5. Documentación
Documentar los valores personalizables en values.yaml.
Resumen
En este capítulo, usted ha aprendido:
Helm: Gestor de paquetes para Kubernetes
Chart: Paquete de aplicación Kubernetes
Release: Instancia de un Chart desplegado
Repository: Colección de Charts
Instalación: helm install con repositories
Gestión: helm upgrade, helm rollback, helm uninstall
Ventajas: Simplicidad, versionado, reutilizabilidad, compartir
Buenas prácticas: Repositories, versionado, values files, testing
Próximos Pasos
Capítulo 10.2: Helm Charts (Creación y Estructura)
Capítulo 10.3: Plantillas y Valores
Lab 10.1: Instalación y Uso de Charts Helm
Capítulo creado el: diciembre 2024