Helm Kubernetes, el gestor de paquetes en la nube y alternativas

Helm Kubernetes

Helm Kubernetes, el gestor de paquetes en la nube y alternativas

Autor | Adrián Rico, Cloud Architect & DevOps Engineer en ACKstorm

Helm es un administrador de paquetes para aplicaciones de Kubernetes. Helm Kubernetes se trata de la herramienta muy útil y la más utilizada a la hora de hacer despliegues en la nube. 

El nombre de Helm es un juego de palabras que hace referencia al timón, al igual que Kubernetes hace referencia al timonel, y en su vocabulario los paquetes se llaman Chart. Los Helm Charts te ayudan a definir, instalar y actualizar incluso la aplicación de Kubernetes más compleja. Los Helm Charts son fáciles de crear, versionar, compartir y publicar. 

Los objetivos principales de la creación de Helm Kubernetes fueron los siguientes:

  • Facilitar el paso de “from zero to Kubernetes”.
  • Proveer de un package manager al igual que tienen los sistemas operativos.
  • Enfatizar en la seguridad y la configurabilidad de aplicaciones en Kubernetes.

El proyecto de Helm fue iniciado en 2015 y ha evolucionado mucho durante los últimos años, pasando por sus versiones v1, v2 y la actual v3. Helm fue aceptado en la Cloud Native Computing Foundation (CNCF) el 1 de junio de 2018 y tiene el rango de Graduado por el nivel de madurez del proyecto.

Tiene más de 23k estrellas en Github y tiene una frecuencia de release de dos semanas.


Pros y contras de Helm Kubernetes


Pros de Helm:
  • Rapidez de despliegue.
  • Reutilización de los paquetes.
  • Personalización de configuración durante el despliegue.
  • Gran documentación.
Contras de Helm:
  • Curva de aprendizaje del templating.
  • Nuevo binario.

Alternativa a Helm Kubernetes: Kustomize vs Helm

Para desplegar aplicaciones en Kubernetes la forma más básica es creando manifiestos con los objetos necesarios, como por ejemplo un deployment con su service. Pero, ¿qué pasa cuando nuestra aplicación requiere de más componentes? Podríamos llegar a la conclusión de que seguir con esta opción sería correcta, y así es , pero con el tiempo se volvería difícil de mantener cuando empecemos a añadir más complejidad, como diferentes entornos, más aplicaciones, etcétera.

Por ello Kubernetes ofrece también de forma nativa una herramienta de despliegue llamada Kustomize, que soluciona muchos problemas que se pueden llegar a encontrar cuando llegamos a la casuística de los entornos. ¿Cuál sería la solución, repetir los manifiestos cambiando parte del contenido de aquellos que sean necesarios?

Es aquí donde Kustomize nos ofrece una herramienta de despliegue que se basa en generar manifiestos para diferentes entornos, utilizando una metodología de merge entre los ficheros.

Tenemos ficheros base, ficheros de overlay donde están los cambios y ficheros de kustomization, donde se define cómo los ficheros de overlay se fusionan con el base.

A continuación, vemos una estructura de carpetas y ficheros:

Kustomiz estructura de carpetas y ficheros

A pesar de que en este último punto se habla sobre configurabilidad, Helm Kubernetes no fue especialmente diseñado para esta misma labor como ya hacen otros softwares tales como Puppet, Chef o Ansible, que se enfocan en cómo un software está específicamente configurado en un host. Y aunque no fue inicialmente diseñado para esta función, muchas empresas lo utilizan con este propósito.

Pese a que cumple con él a grandes rasgos, hay otras herramientas diseñadas específicamente para ello con grandes funcionalidades, como por ejemplo Helmfile, Flux o Reckoner.

Otra de las virtudes de Helm Kubernetes es que automáticamente guarda las diferentes versiones de nuestras releases de las aplicaciones habilitándonos de forma sencilla a volver a una versión anterior en caso de que haya algún problema.

Tanto Helm como Kustomize son herramientas poderosas para administrar de aplicaciones de Kubernetes, cada una con sus fortalezas únicas. Helm es ideal para gestionar Helm Charts, reutilización y configuraciones complejas, mientras que Kustomize es ideal para cambios y superposiciones. La elección entre ellos depende de tus necesidades y preferencias específicas. Recuerda, Kubernetes es un ecosistema en constante evolución y mantenerse actualizado sobre las últimas herramientas y mejores prácticas te ayudará a optimizar sus implementaciones de manera efectiva.

Más alternativas existentes a Helm Kubernetes: 

En un primer listado, que iremos actualizando puntualmente, nos encontramos las siguientes herramientas: