Arquitectura de Helm
Este documento describe la arquitectura de Helm a alto nivel.
El Propósito de Helm
Helm es una herramienta para gestionar paquetes de Kubernetes llamados charts. Helm puede hacer lo siguiente:
- Crear nuevos charts desde cero
- Empaquetar charts en archivos de archivo de chart (tgz)
- Interactuar con repositorios de charts donde se almacenan los charts
- Instalar y desinstalar charts en un clúster de Kubernetes existente
- Gestionar el ciclo de vida de los charts que han sido instalados con Helm
Para Helm, hay tres conceptos importantes:
- El chart es un conjunto de información necesaria para crear una instancia de una aplicación Kubernetes.
- La configuración contiene información de configuración que puede fusionarse con un chart empaquetado para crear un objeto liberable.
- Un lanzamiento es una instancia en ejecución de un chart, combinada con una configuración específica.
Componentes
Helm es un ejecutable que se implementa en dos partes distintas:
El Cliente Helm es un cliente de línea de comandos para usuarios finales. El cliente es responsable de lo siguiente:
- Desarrollo local de charts
- Gestión de repositorios
- Gestión de lanzamientos
- Interfaz con la biblioteca de Helm
- Envío de charts para ser instalados
- Solicitud de actualización o desinstalación de lanzamientos existentes
La Biblioteca Helm proporciona la lógica para ejecutar todas las operaciones de Helm. Se comunica con el servidor API de Kubernetes y proporciona la siguiente capacidad:
- Combinar un chart y configuración para construir un lanzamiento
- Instalar charts en Kubernetes y proporcionar el objeto de lanzamiento subsiguiente
- Actualizar y desinstalar charts interactuando con Kubernetes
La biblioteca independiente de Helm encapsula la lógica de Helm para que pueda ser aprovechada por diferentes clientes.
Implementación
El cliente y la biblioteca de Helm están escritos en el lenguaje de programación Go.
La biblioteca utiliza la biblioteca cliente de Kubernetes para comunicarse con Kubernetes. Actualmente, esa biblioteca utiliza REST+JSON. Almacena información en Secrets ubicados dentro de Kubernetes. No necesita su propia base de datos.
Los archivos de configuración están, cuando es posible, escritos en YAML.