Implementar aplicaciones en Kubernetes (el popular y sólido sistema contenedor y organizador) puede ser un proceso complejo. Configurar una sola aplicación puede implicar crear varios recursos de interdependientes de Kubernetes (tales como lugares de descarga, servicios, implementaciones y ReplicaSets), cada uno de los cuales requiere la redacción de un archivo de manifiesto YAML detallado.
Helm es un administrador de paquetes para Kubernetes que permite a los desarrolladores y operadores configurar e implementar de forma más sencilla aplicaciones y servicios en clústeres de Kubernetes.
Actualmente, Helm es un proyecto oficial de Kubernetes y forma parte de Cloud Native Computing Foundation, una organización sin fines de lucro que respalda proyectos de código abierto en el ecosistema de Kubernetes y a su alrededor.
En este artículo, proporcionaremos una descripción general de Helm y las diversas abstracciones que usa para simplificar la implementación de aplicaciones en Kubernetes. Si no conoce Kubernetes, Introducción a Kubernetes puede resultarle útil antes para familiarizarse con los conceptos básicos.
La mayoría de los sistemas operativos y de programación de lenguaje tienen su propio administrador de paquetes para la instalación y el mantenimiento de software. Helm proporciona el mismo conjunto de funciones básicas que muchos de los administradores que seguramente ya conoce, como apt
de Debian o pip
de Python.
Helm puede:
Helm proporciona esta funcionalidad a través de los siguientes componentes:
helm
, que proporciona la interfaz de usuario para todas las funcionalidades de Helm.tiller
, que funciona en su clúster de Kubernetes, escucha los comandos de helm
y gestiona la configuración e implementación de versiones de software en el clúster.A continuación, investigaremos el formato de los charts en mayor detalle.
Los paquetes de Helm se llaman charts, y constan de algunos archivos de configuración YAML y algunas plantillas que se convierten en archivos de manifiesto de Kubernetes. Esta es la estructura de directorios básica de un chart:
package-name/
charts/
templates/
Chart.yaml
LICENSE
README.md
requirements.yaml
values.yaml
Estos directorios y archivos tienen las siguientes funciones:
requirements.yaml
para vincular las dependencias de manera dinámica.values.yaml
y la línea de comandos) y se representan en manifiestos de Kubernetes. Las plantillas usan el formato Go programming language.El comando helm
puede instalar un chart de un directorio local o de una versión .tar.gz
empaquetada de esta estructura de directorio. Estos charts empaquetados también pueden descargarse e instalarse automáticamente desde los repositorios de charts, o repos.
A continuación, analizaremos los repositorios de charts.
Un repo de charts de Helm es un sitio HTTP simple que proporciona un archivo index.yaml
y charts empaquetados .tar.gz
. El comando helm
tiene subcomandos disponibles para ayudar a empaquetar charts y crear el archivo index.yaml
necesario. En cualquier servidor web, servicio de almacenamiento de objetos o sitio estático, como las páginas GitHub, se pueden proporcionar estos archivos.
Helm viene previamente configurado con un repositorio de charts predeterminado, conocido como stable. Este repo apunta a un depósito de almacenamiento de Google en https://kubernetes-charts.storage.googleapis.com
. La fuente del repo **stable **se puede encontrar en el repositorio Git de helm/charts en GitHub.
Los repos alternativos pueden agregarse con el comando helm repo add
. Los siguientes son algunos repositorios alternativos populares:
Si instala un chart que desarrolló a nivel local o uno de un repo, debe configurarlo para su instalación en particular. A continuación, veremos las configuraciones.
Un chart suele incorporar valores de configuración predeterminados en su archivo values.yaml
. Algunas aplicaciones pueden implementarse completamente con valores predeterminados, pero por lo general deberá sobrescribir alguna de las configuraciones para que el chart cumpla con sus requisitos.
El autor del chart determina los valores expuestos para la configuración. Algunos se usan para configurar Kubernetes antiguos y algunos pueden pasarse a través del contenedor subyacente para configurar la propia aplicación.
A continuación, se brinda un fragmento de algunos valores de ejemplo:
service:
type: ClusterIP
port: 3306
Estas son opciones para configurar un recurso de servicio de Kubernetes. Puede usar helm inspect values chart-name
para desechar todos los valores de configuración disponibles para un chart.
Estos valores pueden sobrescribirse redactando su propio archivo YAML y usándolo al ejecutar helm install
, o al establecer opciones de manera individual en la línea de comandos con el indicador --set
. Solo necesita especificar esos valores predeterminados que desee cambiar.
Un chart de Helm implementado con una configuración particular se conoce como release. Hablaremos sobre los releases a continuación.
Durante la instalación de un chart, Helm combina las plantillas del chart con la configuración especificada por el usuario y los valores predeterminados de value.yaml
. Estos se convierten en manifiestos de Kubernetes que se implementan a través de la API de Kubernetes. Con esto se crea un release, una configuración e implementación específica de un chart en particular.
El concepto de los lanzamientos es importante, ya que posiblemente desee implementar la misma aplicación más de una vez en un clúster. Por ejemplo, es posible que necesite varios servidores de MySQL con distintas configuraciones.
También es posible que quiera mejorar distintas instancias de un chart de manera individual. Es posible que una aplicación esté lista para un servidor MySQL actualizado, y que otra no lo esté. Con Helm, puede mejorar cada release de forma individual.
Es posible que mejore un release porque se actualizó el chart de este o porque quiere actualizar la configuración del propio release. De cualquier manera, con cada mejora se creará una nueva revisión de un release y Helm le permitirá restablecer fácilmente revisiones anteriores en caso de que se produzca un problema.
Si no puede encontrar un chart existente para el software que implementará, es posible que prefiera crear uno propio. Helm puede generar la estructura del directorio de un chart con helm create chart-name
. Con esto, se creará una carpeta con los archivos y directorios que analizamos en la sección Charts anterior.
A partir de este punto, debe completar los metadatos de su chart en Chart.yaml
y disponer sus archivos de manifiesto de Kubernetes en el directorio templates
. Luego, debe quitar las variables de configuración pertinentes de sus manifiestos y disponerlas en values.yaml
,y luego incluirlas de nuevo en sus plantillas de manifiestos mediante el sistema de creación de plantillas.
El comando helm
tiene muchos subcomandos disponibles para ayudarlo a probar, empaquetar y administrar sus charts. Para obtener más información, consulte la documentación oficial de Helm vinculada al desarrollo de charts.
A lo largo de este artículo, hicimos una revisión de Helm, el administrador de paquetes de Kubernetes. Observamos la arquitectura de Helm y los componentes individuales helm
y tiller
, vimos en detalle el formato de charts de Helm y analizamos los repositorios de charts. También investigamos la forma de configurar un chart de Helm y de combinar e implementar las configuraciones y los charts como releases en clústeres de Kubernetes. Por último, vimos brevemente los conceptos básicos con los que se puede crear un chart cuando no hay uno adecuado disponible.
Para obtener más información sobre Helm, consulte la documentación oficial de Helm. Para encontrar charts oficiales para Helm, consulte el repositorio oficial de Git helm/charts en GitHub.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!