Aspectos básicos de Helm
Al implementar, aplicar el control de versiones y actualizar aplicaciones, es necesario asegurarse de tener las versiones correctas de las bibliotecas de software y las configuraciones para que la aplicación funcione según lo previsto.
Supongamos que el equipo de desarrollo decidiera implementar el sitio web de la empresa de la tienda de mascotas en Kubernetes. Como parte del proceso, el equipo crea archivos de implementación, servicio y entrada basados en YAML. Codifica y mantiene la información de cada archivo para cada entorno de destino a mano. Sin embargo, mantener tres archivos para cada entorno resulta engorroso y es cada vez más complejo, a medida que crece la aplicación.
Puede usar Helm para simplificar el proceso de implementación de aplicaciones, y evitar la configuración y las variables de implementación codificadas de forma rígida.
¿Qué es Helm?
Helm es un administrador de paquetes para Kubernetes que combina todos los recursos y la información de implementación de una aplicación en un solo paquete de implementación.
Piense en Helm de forma similar al Administrador de paquetes de Windows, la Herramienta de paquetes avanzados (APT) en Linux o Homebrew en macOS. El usuario especifica el nombre de la aplicación que quiere instalar, actualizar o quitar, y Helm se encarga del proceso.
Con Helm, no existe ninguna limitación en cuanto a la instalación de una sola aplicación a la vez. Helm permite crear archivos de script de YAML legibles para el usuario y con plantillas para administrar la implementación de la aplicación. Estos archivos de plantilla le permiten especificar todas las dependencias, la asignación de configuración y los secretos necesarios que se utilizan para administrar correctamente la implementación de una aplicación.
Helm usa cuatro componentes para administrar implementaciones de aplicaciones en un clúster de Kubernetes:
- Cliente de Helm
- Gráficos de Helm
- Versiones de Helm
- Repositorios de Helm
¿Qué es el cliente de Helm?
El cliente de Helm es un binario instalado por el cliente responsable de la creación y el envío de los archivos de manifiesto necesarios para implementar aplicaciones de Kubernetes. El cliente se encarga de la interacción entre el usuario y el clúster de Kubernetes.
El cliente de Helm está disponible para todos los sistemas operativos principales y está instalado en el equipo cliente. En Azure, el cliente de Helm se instala previamente en Cloud Shell y admite todas las características de seguridad, identidad y autorización de Kubernetes.
Nota:
En este módulo se presupone el uso de Helm v3. Puede ejecutar el comando helm version
para comprobar la versión de Helm que se ejecuta en el dispositivo cliente. Si está ejecutando Helm v2, tenga en cuenta que algunos de los parámetros de comando de este módulo serán diferentes.
¿Qué es un gráfico de Helm?
Un gráfico de Helm es un paquete de implementación con plantilla que describe un conjunto relacionado de recursos de Kubernetes. Contiene toda la información necesaria para compilar e implementar los archivos de manifiesto con el fin de que una aplicación se ejecute en un clúster de Kubernetes.
Un gráfico de Helm consta de varios archivos y carpetas que describen el gráfico. Algunos de los componentes son obligatorios, mientras que otros son opcionales. Lo que elija incluir se basará en los requisitos de configuración de las aplicaciones.
En la lista siguiente, se describen los componentes de archivo y carpeta de un gráfico de Helm, con los elementos necesarios en negrita:
Archivo / Carpeta | Descripción |
---|---|
Chart.yaml |
Archivo YAML que contiene la información sobre el gráfico. |
values.yaml |
Valores de configuración predeterminados del gráfico. |
templates/ |
Carpeta que contiene las plantillas de implementación del gráfico. |
LICENSE |
Archivo de texto sin formato que contiene la licencia del gráfico. |
README.md |
Archivo Markdown que contiene instrucciones sobre cómo usar el gráfico. |
values.schema.json ** |
Archivo de esquema para aplicar la estructura en el archivo values.yaml. |
charts/ |
Carpeta que contiene todos los subgráficos del gráfico principal. |
crds/ |
Definiciones de recursos personalizados. |
templates/Notes.txt |
Archivo de texto que contiene las notas de uso de la plantilla. |
¿Qué es una versión de Helm?
Una versión Helm es la aplicación o el grupo de aplicaciones que se implementan con un gráfico. Cada vez que se instala un gráfico, se crea una nueva instancia de una aplicación en el clúster. Cada instancia tiene un nombre de versión que le permite interactuar con la instancia de la aplicación específica.
Por ejemplo, digamos que instaló dos instancias de Nginx en el clúster de Kubernetes mediante un gráfico. Más adelante, decide actualizar la primera instancia de Nginx, pero no la segunda. Dado que las dos versiones son diferentes, puede actualizar la primera sin que la segunda se vea afectada.
¿Qué es un repositorio de Helm?
Un repositorio de Helm es un servidor HTTP dedicado que almacena información sobre los gráficos de Helm. El servidor hospeda un archivo que describe los gráficos y dónde descargar cada uno de ellos.
El proyecto de Helm hospeda muchos gráficos públicos, y existen muchos repositorios mediante los que puede volver a usar los gráficos. Los repositorios de Helm simplifican la detectabilidad y la reutilización de los paquetes de Helm.
Ventajas del uso de Helm
Helm presenta una serie de ventajas que simplifican la implementación de aplicaciones y mejoran la productividad en el ciclo de vida de desarrollo e implementación de aplicaciones nativas de nube. Con Helm, tiene versiones de aplicaciones que presentan las siguientes características:
- Repetible,
- Confiable,
- Administrables en entornos diversos y complejos, y
- Reutilizables en distintos equipos de desarrollo
Un gráfico de Helm estandariza la implementación de aplicaciones mediante la lógica de plantilla empaquetada que se parametriza con valores de entrada establecidos. Este diseño de paquetes controlado por plantillas proporciona un enfoque independiente del entorno para implementar y compartir aplicaciones nativas de nube.