Características Esenciales de Helm 3 que Todo Ingeniero de Kubernetes Debe Conocer

Eliminación Definitiva del Componente Tiller

Helm 3 ha eliminado por completo el componente servidor Tiller, transformando la herramienta en un cliente puro. Este cambio resuelve problemas críticos de seguridad y operatividad presentes en versiones anteriores. Anteriormente, Tiller requería permisos de ClusterRole que generaban conflictos con los contextos de kubectl, provocando situaciones donde un usuario podía desplegar recursos mediante Helm pero no mediante kubectl.

La arquitectura actual ofrece tres mejoras fundamentaels:

  • Herencia directa de permisos desde el contexto de kubectl
  • Supresión del comando helm init
  • Ámbito de nombres para los nombres de releases

Este enfoque refuerza el principio fundamental: cualquier operación ejecutable con kubectl debe ser posible mediante Helm.

Modelo de Repositorios Distribuidos y Helm Hub

El sistema centralizado de repositorios ha sido reemplazado por una red distribuida. El repositorio stable predeterminado ya no existe, y Helm Hub actúa como índice unificado para descubrir charts. Para instalar una aplicación como PostgreSQL:

helm repo add acme-charts https://charts.acme.com/repository
helm repo update
helm install despliegue-prueba acme-charts/postgresql --set service.port=5432

La búsqueda se realiza directamente en Helm Hub:

helm search hub postgresql --list-repos

Esta arquitectura beneficia a mantenedores al eliminar cuellos de botella en publicación de charts, y a usuarios al garantizar acceso a versiones actualizadas sin retrasos.

Validación Estricta con Esquemas JSON

Los charts pueden definir esquemas JSON para validar valores de entrada. Este mecanismo previene errores comunes como tipos de datos incorrectos. Por ejemplo, al especificar un puerto como cadena:

helm install app-test --set service.port="cinco"

Helm 3 genera un error explícito:

VALORES INVALIDOS:
service.port debe ser un entero (recibido: "cinco")
Esquema requerido: {"type":"integer","minimum":1,"maximum":65535}

Adicionalmente, se implementa validación OpenAPI contra la API de Kubernetes, bloqueando solicitudes con estructuras incorrectas antes de llegar al clúster.

Pruebas Integrdaas con Jobs de Kubernetes

El sistema de pruebas ahora utiliza Jobs en lugar de Pods persistentes. Los recursos de prueba se gestionan automáticamente mediante el ciclo de vida del release:

apiVersion: batch/v1
kind: Job
metadata:
  name: prueba-integracion
  annotations:
    "helm.sh/hook": test-success
spec:
  template:
    spec:
      containers:
        - name: tester
          image: curlimages/curl
          command: ["curl", "-sS", "http://servicio:8080/health"]

Al ejecutar helm test app-test, los Jobs se crean, ejecutan y eliminan automáticamente sin requerir banderas adicionales, facilitando ejecuciones repetidas durante el despliegue.

Sintaxis de Línea de Comandos Revisada

Los comandos han sido rediseñados para mayor coherencia. El nombre del release ahora es obligatorio, pero se puede generar automáticamente:

helm install --generate-name acme-charts/nginx

La eliminación de recursos se simplifica con:

helm uninstall despliegue-prueba

Que elimina automáticamente todos los recursos asociados sin necesidad de --purge. Algunos comandos heredados funcionan como alias, pero se recomienda adoptar la nueva nomenclatura para evitar conflictos en scripts automatizados.

Etiquetas: Helm Kubernetes CI-CD package-management cloud-native

Publicado el 9-4 14:18