¿Qué es Helm?

Introducción

En los últimos años se ha producido un cambio de paradigma en la forma de escribir, desplegar y gestionar las aplicaciones. Prácticamente todas las empresas han adoptado una estrategia Cloud-Native y como resultado, las aplicaciones han pasado a una arquitectura de microservicios y el despliegue ahora está gestionado por la Cloud o por Kubernetes.

Como ya sabemos, cuando las aplicaciones se escriben como microservicios, una aplicación se divide en muchas aplicaciones pequeñas, y cada una de estas pequeñas aplicaciones es totalmente independiente.

Con estos cambios, la carga para el equipo de operaciones se multiplica. Las aplicaciones pueden ser granulares, pero el ingeniero de operaciones ahora debe desplegar y gestionar muchas en lugar de una sola, por lo que se hace aún más importante automatizar la tarea.

Si además las aplicaciones se despliegan utilizando Kubernetes aún está más justificado, ya que para cada aplicación que se va a desplegar en Kubernetes, es necesario escribir muchos archivos de manifiesto. De nuevo, cada aplicación contiene numerosos componentes desplegables, como una base de datos, una API, un front-end, una capa de acceso a la base de datos y muchos otros. Para cada componente, habría uno o más archivos de manifiesto. Así que para un conjunto de microservicios, uno podría terminar desplegando cientos de ficheros manifest en Kubernetes, además cada uno de estos archivos debe desplegarse en una secuencia determinada sin fallos. De lo contrario, el despliegue puede corromperse o fallar.

Una vez entendido el problema, es importante encontrar una herramienta que pueda hacer lo siguiente:

  • Comprender los microservicios y los archivos de manifiesto.
  • Comprender el orden de envío de los archivos a Kubernetes.
  • Pensar en el conjunto completo de microservicios como una aplicación.
  • Hacer Rollback y Upgrade de la aplicación como una sola unidad casi con facilidad.
  • Hacerlo de forma segura.

Aunque hay múltiples herramientas disponibles para lograr esto, la más popular entre ellas es Helm.

¿Qué es Helm?

Helm es un software open-source que ayuda a instalar, actualizar, revertir y desinstalar cargas de trabajo de Kubernetes en un clúster de Kubernetes. A Helm también se le conoce como el gestor de paquetes de Kubernetes. Con Helm, los despliegues complejos de Kubernetes pueden instalarse con suma facilidad. Un conjunto de microservicios muy grande puede instalarse, desinstalarse y gestionarse con un solo comando.

Se habla de "instalación" en lugar de "despliegue" porque Helm ve los despliegues como aplicaciones que se instalan en una plataforma, igual que cualquier otro gestor de paquetes instala paquetes en una plataforma (por similitud con yum y apt).

Para utilizar Helm, necesitamos almacenar nuestros archivos de manifiesto de Kubernetes en una estructura de carpetas específica. Esta estructura de carpetas se trata como un paquete. Los paquetes Helm se denominan charts. Los charts pueden anidarse para ayudar a instalar múltiples aplicaciones utilizando una única estructura de carpetas. Para mayor comodidad a la hora de gestionar el chart, así como varias versiones del mismo grafo, las carpetas también pueden archivarse y almacenarse en un repositorio.

¿Cómo funciona Helm?

Veamos la arquitectura de Helm:

Helm contiene 3 conceptos clave:

  • Chart: Como sabemos, un chart es un paquete que contiene todos los artefactos necesarios de Kubernetes y unos pocos archivos específicos de Helm en una determinada estructura de carpetas. Todos estos archivos son necesarios para instalar una aplicación Kubernetes.
  • Config: El config consiste en uno o más archivos yaml y contiene la información de configuración necesaria para desplegar una aplicación Kubernetes. Estas configuraciones se fusionan en el chart durante las operaciones de helm.
  • Release: Se denomina release a la instancia en ejecución de un chart . El chart se fusiona con la configuración, y que instala con éxito una aplicación como una versión. Un chart puede tener varias versiones.

Componentes

Helm, hasta la versión 2, trabajaba con un modelo cliente-servidor. Sin embargo, con la versión más reciente, Helm 3, Helm trabaja con un modelo cliente + biblioteca. Helm está escrito en lenguaje GO. Cuando instalamos Helm, estamos instalando tanto la librería Helm como el cliente.

Cliente Helm

El cliente Helm es la interfaz de línea de comandos para trabajar con el cluster Kubernetes. Cualquier operación que el usuario tenga que invocar necesita ser empujada a través del cliente Helm.

El cliente Helm es responsable del desarrollo local de charts, la gestión de repositorios de charts, la gestión de versiones, la interacción con la librería Helm, y la instalación, actualización, reversión y desinstalación de aplicaciones.

Librería Helm

La librería Helm es el motor real de Helm. Almacena la lógica para todas las operaciones Helm invocadas a través del cliente Helm. Como se ha indicado anteriormente, la lógica está escrita en GO. Interactúa con el servidor API de Kubernetes para invocar operaciones Helm. Utiliza REST+JSON para sus interacciones con el servidor API de Kubernetes. Almacena toda la información de configuración en Kubernetes ETCD.

Cuando el cliente Helm emite un comando, la librearíaintegra los artefactos de Kubernetes y la información de configuración y genera los archivos de manifiesto finales que se enviarán como un mensaje POST al servidor de la API de KUBE.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s