Helm es un gestor de paquetes para Kubernetes que simplifica el despliegue y la gestión de aplicaciones. Helm ayuda a reducir la complejidad de trabajar con Kubernetes, la plataforma de código abierto que automatiza el despliegue y el funcionamiento de aplicaciones en contenedores en varios servidores.
En lugar de crear y mantener manualmente docenas de archivos de configuración separados, Helm agrupa todo lo necesario para una aplicación en un único paquete reutilizable llamado gráfico Helm.
Si bien Kubernetes es potente, a menudo requiere una configuración extensa y detallada escrita en archivos YAML, que especifica cómo deben ejecutarse las aplicaciones, cómo se conectan y qué recursos necesitan.
La gestión manual de estas configuraciones por parte de desarrolladores, administradores de sistemas e ingenieros de DevOps, especialmente en múltiples entornos como desarrollo, pruebas y producción, puede llevar mucho tiempo y ser propensa a errores. Helm aborda este desafío mediante la introducción de la estandarización, la reutilización y el control de versiones, con características que incluyen reversiones y personalización específica del entorno.
Boletín de la industria
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Antes de sumergirnos en Helm, es fundamental comprender la contenerización, la base de Kubernetes y las herramientas nativas de la nube modernas.
La contenedorización empaqueta una aplicación con todo lo que necesita para ejecutar (código, bibliotecas y configuración) en una unidad liviana y portátil llamada contenedor. Esta capacidad permite que el software se ejecute de manera consistente en diversos entornos, desde la computadora portátil de un desarrollador hasta un entorno de nube de producción.
Los contenedores generalmente se basan en Linux y son más rápidos y eficientes que las máquinas virtuales tradicionales. También son adecuados para arquitecturas de microservicios, donde las aplicaciones se dividen en componentes más pequeños e implementables de forma independiente que pueden escalarse según sea necesario. En Kubernetes, estas cargas de trabajo en contenedores se ejecutan en un clúster, un grupo de máquinas que consta de un plano de control que gestiona el sistema y los nodos de trabajo que ejecutan aplicaciones en toda la infraestructura.
Docker, una plataforma de código abierto lanzada al público en 2013, es la herramienta de contenerización más utilizada. Hoy en día, la contenerización es una parte central del ecosistema nativo de la nube de código abierto, lo que permite un desarrollo más rápido, despliegues más confiables y una mayor flexibilidad operativa.
Kubernetes orquesta contenedores a escala automatizando el despliegue, el escalado y la gestión de recursos. Sin embargo, la gestión directa de las configuraciones de Kubernetes puede ser compleja y propensa a errores. Helm desempeña un papel clave aquí al simplificar, estandarizar y agilizar el despliegue y el mantenimiento de aplicaciones en contenedores.
Deis (adquirida posteriormente por Microsoft) creó Helm en 2016 como una de las primeras herramientas para simplificar la gestión de aplicaciones de Kubernetes. En 2018, el equipo donó el proyecto a la Cloud Native Computing Foundation (CNCF), que lo graduó como proyecto CNCF completo en 2020.
El desarrollo de código abierto de Helm se mantiene activamente en GitHub, donde colaboradores de todo el mundo contribuyen a su evolución. El sitio web oficial, helm.sh, proporciona documentación (documentos), descargas y recursos exhaustivos para ayudar a los usuarios a empezar y mantenerse actualizados.
Un hito clave fue el lanzamiento de Helm 3 a finales de 2019. Esta versión eliminó el componente Tiller de Helm 2, mejorando la seguridad y simplificando el control de acceso al interactuar directamente con las interfaces de programación de aplicaciones (API) de Kubernetes. Helm 3 también mejoró los procesos de actualización, la gestión de las dependencias y el soporte para los gráficos de las bibliotecas, haciéndolo más seguro, flexible y fácil de usar en las empresas.
Helm ha experimentado una adopción masiva en todo el ecosistema nativo de la nube. Según las encuestas recientes de CNCF, Helm es el gestor de paquetes de Kubernetes preferido, con una adopción del 75 % entre las organizaciones que ejecutan Kubernetes.1
Artifact Hub (que reemplazó al Helm Hub original) aloja miles de gráficos, y los principales proveedores de software proporcionan rutinariamente gráficos de Helm como su principal método de distribución de Kubernetes.
Helm simplifica la gestión de aplicaciones de Kubernetes al agrupar manifiestos de Kubernetes (archivos de configuración), plantillas de configuración y metadatos en paquetes reutilizables llamados gráficos de Helm. Estos gráficos contienen todas las especificaciones necesarias para generar los archivos YAML adecuados para los recursos de Kubernetes (como despliegues, servicios, controladores de ingress, volúmenes persistentes, mapas de configuración y secretos) que componen una aplicación.
“YAML” es un acrónimo que significa "YAML Ain't Markup Language" o "Yet Another Markup Language". Es un formato de datos fácil de usar para los humanos que se utiliza para escribir archivos de configuración y ofrece una forma clara y estructurada de representar información que tanto las personas como los programas pueden leer.
Cuando se instala un gráfico, Helm aplica automáticamente estos recursos al clúster de Kubernetes de destino, con soporte integrado para el control de versiones, las reversiones y la gestión de dependencias.
Helm funciona principalmente como una herramienta del lado del cliente que interactúa directamente con el servidor de API de Kubernetes para gestionar los despliegues de aplicaciones:
Un cliente Helm es una herramienta de línea de comandos (CLI) que interactúa con los clústeres de Kubernetes y gestiona gráficos y versiones. Esta herramienta es la que los desarrolladores y operadores utilizan a diario. A diferencia de kubectl, la herramienta de comandos nativa de Kubernetes, Helm gestiona aplicaciones completas en lugar de componentes individuales.
Un gráfico de Helm es un formato de paquete que contiene todas las definiciones de recursos necesarias para ejecutar una aplicación en Kubernetes. Los gráficos incluyen plantillas, valores de configuración predeterminados y metadatos.
Una versión de Helm es una instancia de un gráfico que se ejecuta en un clúster Kubernetes. Cada versión tiene un nombre único y puede gestionarse de forma independiente.
Los repositorios de Helm son colecciones de gráficos que se pueden compartir y distribuir, de forma similar a las tiendas de aplicaciones o bibliotecas de paquetes de otros ecosistemas.
Un gráfico de Helm es una colección de archivos que describen un conjunto relacionado de recursos de Kubernetes. La estructura del gráfico incluye:
Los desarrolladores de Kubernetes, administradores de sistemas y otros profesionales de operaciones de TI (ITOps) en organizaciones empresariales utilizan Helm para realizar tareas tales como:
Helm reduce significativamente la complejidad operativa asociada a la gestión de los despliegues de Kubernetes. Al automatizar y estandarizar la gestión de la configuración, Helm agiliza los flujos de trabajo que, de otro modo, implicarían una edición manual de YAML compleja y propensa a errores.
Esta eficiencia cobra especial importancia a medida que las organizaciones escalan sus entornos nativos de la nube y adoptan tecnologías emergentes, como las cargas de trabajo de inteligencia artificial (IA) y machine learning (ML) y la computación edge.
Las capacidades de reversión integradas de Helm proporcionan redes de seguridad cruciales para los despliegues de producción. Si una actualización falla o causa problemas, los equipos pueden volver instantáneamente a la versión funcional anterior con un solo comando. Esta característica reduce el tiempo medio de recuperación (MTTR) de los incidentes relacionados con el despliegue, que es un requisito esencial para las aplicaciones de alta disponibilidad y los servicios de inferencia de IA en tiempo real.
Los gráficos de Helm y los esquemas pueden ser controlados por versiones y revisiones de código como cualquier otro artefacto de software. Este enfoque proporciona registros de auditoría para los despliegues y garantiza que los cambios pasen por los procesos de aprobación adecuados. Muchas organizaciones utilizan flujos de trabajo de Helm con GitOps para mejorar la gobernanza, lo que permite a las organizaciones cumplir con los requisitos de cumplimiento de las industrias reguladas que adoptan arquitecturas nativas de la nube.
Al abstraer la complejidad de Kubernetes, Helm permite a los desarrolladores centrarse en la lógica de las aplicaciones más que en la configuración de la infraestructura. Los equipos pueden realizar despliegues de autoservicio que utilizan gráficos preaprobados, lo que reduce la dependencia de los equipos de la plataforma y acelera la velocidad de desarrollo necesaria para las iniciativas competitivas de IA y transformación digital.
Las organizaciones suelen emplear Helm para gestionar aplicaciones personalizadas en entornos de desarrollo, preparación y producción. Un mismo gráfico puede configurar con diferentes límites de recursos, réplicas y banderas de características para cada entorno.
La instalación y gestión de software de terceros, como bases de datos, herramientas de supervisión o componentes de CI/CD, es más sencilla con Helm. En lugar de seguir una compleja documentación de instalación, los equipos pueden instalar configuraciones listas para producción con un solo comando de instalación de Helm.
Helm sobresale en escenarios en los que la misma aplicación debe desplegarse varias veces con diferentes configuraciones en espacios de nombres separados. Las plataformas SaaS, por ejemplo, a menudo utilizan Helm para gestionar despliegues específicos de clientes de sus aplicaciones.
Helm se integra perfectamente con pipelines de integración continua y despliegue continuo, sirviendo como mecanismo de despliegue en pipelines de entrega automatizada. Las plataformas de comercio electrónico utilizan Helm para gestionar el escalado estacional, desplegando rápidamente otras instancias de aplicaciones durante los periodos de mayor tráfico y reduciendo el escalado durante las horas de menor actividad, todo ello gestionado a través de versiones de Helm.
Helm es una solución ideal para administrar cargas de trabajo de inteligencia artificial (IA) y machine learning (ML), que a menudo requieren configuraciones complejas, incluidos Recursos de GPU, almacenamiento especializado, componentes de servicio de modelos y sistemas de monitoreo. Las organizaciones utilizan Helm para estandarizar el despliegue de pipelines de machine learning (ML), asegurando entornos consistentes para las cargas de trabajo de capacitación y inferencia en clústeres de desarrollo y producción.
Kustomize es otra solución ampliamente adoptada para gestionar las configuraciones de Kubernetes, aunque adopta un enfoque diferente al de Helm. Mientras que Helm emplea plantillas para generar manifiestos, Kustomize emplea un enfoque declarativo con parches y superposiciones para modificar las configuraciones base.
Kustomize es más simple y requiere una curva de aprendizaje más baja, pero carece de las capacidades de administración de paquetes de Helm, control de versiones y características de reversión. Muchas organizaciones emplean ambas herramientas juntas: Kustomize gestiona las variantes de configuración y Helm gestiona el ciclo de vida general de la aplicación.
Los operadores de Kubernetes son controladores específicos de la aplicación que amplían las API de Kubernetes para gestionar aplicaciones complejas. Mientras Helm se enfoca en el empaquetado y el despliegue, los operadores brindan una gestión continua del ciclo de vida. Pueden manejar tareas operativas específicas de la aplicación, como copias de seguridad, escalado y actualizaciones.
Helm es más adecuado para el despliegue de aplicación y cargas de trabajo más simples. Al mismo tiempo, los operadores se destacan en la gestión de aplicaciones con estado con requisitos operativos complejos. Muchas organizaciones usan Helm para desplegar operadores ellos mismos.
Optimice la gestión de aplicaciones y obtenga insights generados por IA sobre los que puede actuar mediante IBM® Concert, una plataforma de automatización de tecnología impulsada por IA generativa.
Conecte Full Stack Observability con la gestión automatizada de recursos de aplicaciones para abordar los problemas de rendimiento antes de que afecten la experiencia del cliente.
Descubra los servicios altamente innovadores de IBM® Consulting para la gestión de entornos complejos, híbridos y multinube.
1. Encuesta anual CNCF 2023, Cloud Native Computing Foundation, 2023