Helm es un gestor de paquetes para Kubernetes que simplifica la implementación y la gestión de aplicaciones.
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.
Helm ayuda a reducir la complejidad de trabajar con Kubernetes, la plataforma de código abierto que automatiza la implementación y las operaciones de las aplicaciones en contenedores en varios servidores. Aunque Kubernetes es potente, a menudo requiere una configuración extensa y detallada escrita en archivos YAML, en los que se 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 del sector
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. 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 contenerización empaqueta una aplicación con todo lo que necesita para ejecutarse -código, bibliotecas y configuración- en una unidad ligera y portátil llamada contenedor. Esta capacidad permite que el software se ejecute de manera consistente en diversos entornos, desde el ordenador 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 fundamental del ecosistema nativo de la nube de código abierto, lo que permite un desarrollo más rápido, implementaciones más fiables y una mayor flexibilidad operativa.
Kubernetes orquesta contenedores a escala automatizando la implementación, 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 la implementación 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 implementaciones, 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 las implementaciones 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, administradores de sistemas y otros profesionales de operaciones de TI (ITOps) de Kubernetes de las organizaciones empresariales utilizan Helm para realizar tareas como:
Helm reduce significativamente la complejidad operativa asociada a la gestión de las implementaciones 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 el edge computing.
Las capacidades de reversión integradas de Helm proporcionan redes de seguridad cruciales para las implementaciones 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 la implementación, 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 las implementaciones 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 los sectores regulados 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 implementaciones 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 utilizar Helm para gestionar aplicaciones personalizadas en entornos de desarrollo, ensayo y producción. Se puede configurar un único gráfico con diferentes límites de recursos, réplicas e indicadores de características para cada entorno.
La instalación y administración de software de terceros, como bases de datos, herramientas de monitorización o componentes de CI/CD, es más simple con Helm. En lugar de seguir la 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 implementarse varias veces con diferentes configuraciones en espacios de nombres separados. Las plataformas SaaS, por ejemplo, suelen utilizar Helm para gestionar implementaciones específicas de clientes de sus aplicaciones.
Helm se integra a la perfección con los pipelines de integración continua e implementación continua, sirviendo como mecanismo de implementación en delivery pipelines automatizados. Las plataformas de comercio electrónico utilizan Helm para gestionar el escalado estacional, implementando rápidamente otras instancias de aplicaciones durante los períodos de mayor tráfico y reduciéndose durante los períodos de menor actividad, todo ello gestionado a través de versiones de Helm.
Helm es la solución ideal para gestionar las cargas de trabajo de inteligencia artificial (IA) y aprendizaje automático (ML), que suelen requerir configuraciones complejas, incluidos recursos de GPU, almacenamiento, componentes y sistemas de monitorización. Las organizaciones utilizan Helm para estandarizar la implementación de pipelines de ML (aprendizaje automático), garantizando entornos consistentes para cargas de trabajo de entrenamiento e 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 utiliza plantillas para generar manifiestos, Kustomize utiliza un enfoque declarativo con parches y superposiciones para modificar las configuraciones base.
Kustomize es más sencillo y requiere una curva de aprendizaje más baja, pero carece de las capacidades de gestión de paquetes de Helm, control de versiones y características de reversión. Muchas organizaciones utilizan ambas herramientas juntas: Kustomize gestiona las variantes de configuración y Helm maneja el ciclo de vida general de las aplicaciones.
Los operadores de Kubernetes son controladores específicos de la aplicación que amplían las API de Kubernetes para gestionar aplicaciones complejas. Mientras que Helm se centra en el empaquetado y la implementación, los operadores proporcionan una gestión continua del ciclo de vida. Pueden gestionar tareas operativas específicas de la aplicación, como copias de seguridad, escalado y actualizaciones.
Helm es más adecuado para la implementación de aplicaciones generales 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 utilizan Helm para implementar operadores por sí mismas.
Agilice la gestión de aplicaciones y obtenga información generada por IA sobre la que pueda actuar utilizando IBM Concert, una plataforma de automatización tecnológica impulsada por IA generativa.
Combine la capacidad de observabilidad full stack con la gestión de recursos de aplicaciones automatizada para resolver los problemas de rendimiento antes de que afecten a la experiencia del cliente.
Descubra los servicios altamente innovadores de IBM para la gestión de entornos complejos, híbridos y multinube.
1. Encuesta anual CNCF 2023, Cloud Native Computing Foundation, 2023