Pasar al contenido principal
Simplifica y centraliza los despliegues en Kubernetes con mayor flexibilidad.
24/04/2026
abstracto

Se sabe que a día de hoy en el sector de la informática, Kubernetes se encuentra enraizado en muchas de las arquitecturas en la nube existentes. Es un estándar en la industria que ha cogido gran valor con el tiempo y a día de hoy es imprescindible para muchos proyectos modernos, especialmente aquellos basados en microservicios y despliegues escalables. Su capacidad para orquestar contenedores de forma automática ha hecho que se convierta en una pieza central dentro del ecosistema DevOps.

Junto con esta herramienta, vino el gestor de paquetes Helm, que ayuda a instalar fácilmente cualquier aplicación en el entorno que deseemos dentro de Kubernetes, simplificando el proceso de despliegue mediante el uso de charts predefinidos. Estos charts no son más que paquetes configurables que contienen toda la definición necesaria para desplegar una aplicación: desde los servicios, deployments y configuraciones, hasta variables de entorno o dependencias externas.

Sin embargo, a medida que los entornos crecen en complejidad, el uso de Helm de forma aislada comienza a mostrar ciertas limitaciones. La gestión de múltiples charts, la coordinación entre diferentes entornos (desarrollo, pruebas y producción) o el mantenimiento de configuraciones consistentes entre despliegues puede volverse una tarea propensa a errores y difícil de escalar. Helm por sí solo no proporciona una capa de orquestación superior que permita agrupar, versionar o sincronizar múltiples releases de forma centralizada.
Ahí es justo donde entra Helmfile.

¿Qué es Helmfile exactamente?

Explicándolo sin rodeos, Helmfile se trata de una especificación declarativa que ayuda a gestionar esos Helm charts de Kubernetes de una forma mucho más estructurada, agrupando sus releases en un mismo lugar donde se nos permite controlar sus versiones, configurarlos a gusto del desarrollador y adaptarlos a las necesidades del despliegue de aplicaciones en Kubernetes.

Dicho de otro modo, Helmfile actúa como una capa de abstracción por encima de Helm, permitiendo definir en un único archivo YAML todo el estado deseado de nuestro sistema. En lugar de ejecutar múltiples comandos Helm de forma manual para cada aplicación, Helmfile nos permite declarar de forma centralizada qué aplicaciones queremos desplegar, con qué versiones y en qué entornos, y posteriormente aplicar ese estado de manera automática y reproducible.

Cualidades a destacar:

Helmfile no solo actúa como una capa de organización sobre Helm, sino que introduce una serie de funcionalidades clave que lo convierten en una herramienta mucho más potente en entornos reales de producción. Estas funcionalidades se centran principalmente en la declaratividad, la reutilización, la versatilidad y la capacidad de modificación de recursos antes del despliegue.

A continuación se analizan sus características más importantes junto con pequeños ejemplos prácticos que permiten entender su funcionamiento en un entorno simulado.

1. Enfoque declarativo:

Una de las principales ventajas de Helmfile es su naturaleza completamente declarativa. Esto significa que en lugar de ejecutar comandos sueltos para instalar o actualizar aplicaciones, se define un archivo central (helmfile.yaml) donde se especifica el estado deseado del sistema.

Helmfile se encarga de interpretar este archivo y sincronizar el entorno para que coincida exactamente con lo definido, lo que mejora la reproducibilidad y reduce errores humanos.

img1

Configuración de un HelmFile general

img2

Se instalan las dependencias necesarias y se convierte el estado del clúster al deseado

2. Módulos:

Helmfile permite modularizar configuraciones, lo que significa que se pueden reutilizar patrones comunes entre distintos proyectos o equipos. Estos módulos pueden almacenarse en repositorios Git, buckets S3 o sistemas compartidos internos.

Esto es especialmente útil en empresas grandes, donde múltiples equipos necesitan desplegar servicios similares sin duplicar configuraciones.
 

Imagen
img3

Principal con estructura de directorios donde se encuentran diferentes versiones por entorno. Procedemos a combinar ambas.

Imagen
img4
Imagen
img5

Figura 1: Se sincronizan los cambios con el entorno de forma exitosa

3. Versatilidad:

Otra característica importante es que Helmfile no se limita únicamente a Helm charts. También permite gestionar otros tipos de recursos de Kubernetes, como:
•    Charts de Helm
•    Kustomizations
•    Directorios completos de manifiestos YAML

Esto convierte a Helmfile en una herramienta más flexible, capaz de unificar diferentes formas de despliegue bajo una misma interfaz.Sin embargo, estas funcionalidades avanzadas no están disponibles de forma nativa en una instalación estándar de Helmfile, sino que requieren extensiones como helm-x, lo que añade complejidad a su configuración y uso.

Por este motivo, en entornos básicos suele trabajarse únicamente con Helm charts tradicionales, aprovechando ya su capacidad para centralizar múltiples despliegues en un único archivo declarativo.

Imagen
img6

Diferentes tipos de archivos de gestión con los que HelmFile es capaz de trabajar

4. Patch de recursos:

Helmfile permite modificar recursos de Kubernetes antes de su instalación mediante JSON patches o Strategic Merge Patch. Esto evita tener que modificar directamente los charts originales, lo cual es muy útil cuando se usan charts de terceros.

De esta forma, se pueden adaptar configuraciones sin “forkear” o duplicar proyectos externos.

Imagen
img7

Aplicación de un JSON Patch en Helmfile para modificar un recurso Service de un chart de terceros sin alterar el chart original

Por qué se debería utilizar:

El uso de Helm por sí solo ya supone una gran mejora a la hora de desplegar aplicaciones en Kubernetes, pero presenta ciertas limitaciones cuando se trabaja con múltiples charts o entornos más complejos. Cada despliegue se gestiona de forma individual, lo que puede dificultar la organización, el control de versiones y la reproducibilidad del sistema.

Es aquí donde Helmfile aporta un valor diferencial. Al introducir un enfoque declarativo, permite definir en un único archivo el estado completo de todos los releases, facilitando su gestión conjunta y evitando inconsistencias entre entornos. Esto resulta especialmente útil en proyectos donde existen múltiples servicios o configuraciones que deben mantenerse sincronizadas. Además, si tenemos en cuenta el enfoque GitOps, HelmFile encaja ventajosamente ya que al definir de forma declarativa el estado de las aplicaciones así como gestionando las dependencias y configuraciones, podremos tener control y observavilidad total sobre los cambios realizados en la gestión de nuestro entorno en Kubernetes, pudiendo revertir cambios o encontrar registros de los mismos con mucha más facilidad.

Además, Helmfile simplifica tareas como la actualización, instalación o eliminación de varios charts a la vez, reduciendo la posibilidad de errores y mejorando la eficiencia del flujo de trabajo. Frente a Helm “en crudo”, ofrece una capa adicional de control y organización que se vuelve prácticamente imprescindible a medida que crece la complejidad del proyecto.

Si bien es cierto que Helm trata temas como los múltiples charts con los llamados umbrella charts (que consisten en un chart principal que agrupa varios subcharts dentro de una misma estructura) Helmfile propone una abstracción más limpia y flexible. En lugar de agrupar todo en un único chart, permite gestionar cada uno de los charts de forma independiente dentro de un mismo archivo declarativo, evitando comportamientos inesperados y facilitando su mantenimiento. Esto elimina la necesidad de tener que empaquetar y volver a desplegar un umbrella chart cada vez que se modifica uno de sus componentes y además permite un mayor control sobre los despliegues, pudiendo definir el orden en el que se aplican los releases, limitar qué componentes se despliegan en cada entorno o incluso aplicar cambios de forma más controlada sobre partes concretas del sistema.

Imagen
img 8

Ejemplo de HelmFile para gestionar dos aplicaciones al mismo tiempo

Imagen
img9

 Con un sólo comando, desplegamos múltiples releases (si ya existe, se actualiza su estado)

Imagen
img10

 

Relación con ArgoCD y su uso en automatización:

Otra de las grandes ventajas en las que se puede llegar a pensar con HelmFile es en la facilidad en el manejo de automatización de flujos en un despliegue continuo. Al igual que su gran combinación con GitOps, HelmFile casa con las funcionalidades de aplicaciones como ArgoCD, donde se pretende automatizar la entrega continua de aplicaciones.

Se puede utilizar HelmFile dentro de este contexto para definir y organizar los despliegues de forma declarativa, mientras que ArgoCD se encarga de aplicar automáticamente esos cambios en el clúster, creando un flujo de trabajo más robusto.

Además, HelmFile facilita el uso de charts remotos junto con valores almacenados en Git, permite reutilizar configuraciones entre entornos evitando duplicaciones, y soporta plantillas y variables que hacen los despliegues más flexibles. Todo esto, sumado a la centralización en un único archivo, mejora la organización y el mantenimiento del proyecto.

Esto, por supuesto, no se limita solo a aplicaciones concretas, pues también trabajar con cualquier tipo de pipelines de CI/CD utilizando HelmFile ayudará a ejecutar despliegues completos de forma más consistente.

Conclusión:

A lo largo de este artículo se ha visto cómo Helmfile mejora significativamente la gestión de despliegues en Kubernetes, aportando un enfoque declarativo y centralizado que facilita el control y la organización de múltiples releases.

Frente al uso de Helm “en crudo”, introduce una mayor flexibilidad, permitiendo adaptar configuraciones y mantener un estado claro del sistema sin necesidad de modificar directamente los charts originales.

En resumen, Helmfile se presenta como una herramienta sencilla pero potente, capaz de optimizar el trabajo con Kubernetes y hacer más manejables entornos cada vez más complejos.

 

Imagen
imagen rubén

Rubén Gadea
Software Technician
ALTIA