Saltar al contenido principal

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