Flux CD
Tecnología

Flux CD

El toolkit GitOps para mantener los clústeres de Kubernetes sincronizados con Git

Flux es un conjunto de controladores de entrega continua que mantienen los clústeres de Kubernetes sincronizados con fuentes de configuración como repositorios de Git, repositorios de Helm y registros OCI. Desplegar pasa a ser fusionar un pull request en lugar de ejecutar comandos imperativos contra un clúster.

Cómo funciona

Flux se ejecuta como un puñado de controladores dentro de tu clúster. Cada uno hace un solo trabajo: uno obtiene los sources, otro aplica manifiestos de Kubernetes, otro gestiona los releases de Helm, y así sucesivamente. Se comunican mediante recursos personalizados de Kubernetes, así que todo lo que configuras es en sí YAML que puedes guardar en Git. Flux puede incluso gestionar su propia instalación: el comando flux bootstrap hace commit de los manifiestos de Flux en tu repositorio y luego se sincroniza desde ellos.

Conceptos clave

  • Source — donde se almacena el estado deseado: un GitRepository, HelmRepository, OCIRepository o Bucket. Los objetos Source obtienen y almacenan en caché un artefacto para que lo usen otros controladores.
  • Kustomization — el propio recurso de Flux que le dice al clúster qué ruta de un source aplicar, con qué frecuencia y con qué opciones (prune, comprobaciones de salud, dependencias). No debe confundirse con el kustomization.yaml de Kustomize, que Flux también puede construir.
  • HelmRelease — instala y actualiza un chart de Helm desde un repositorio de Helm, un repositorio de Git o un registro OCI, con gestión completa del ciclo de vida del release.
  • Reconciliación — el bucle en el que un controlador compara lo que declara Git con lo que se está ejecutando y corrige la diferencia. Se ejecuta según un intervalo y bajo demanda.
  • Bootstrap — instala Flux en un clúster y lo conecta a un repositorio de Git para que Flux se gestione a sí mismo.
  • Controladores — source, kustomize, helm, notification y los opcionales image-reflector e image-automation.

Por qué los equipos adoptan GitOps con Flux

  • Auditable por defecto. Cada cambio en el clúster tiene un commit y, normalmente, un pull request revisado.
  • Rollback sencillo. Revertir un despliegue es un git revert, no una intervención manual con kubectl bajo presión.
  • Componible. Instala solo los controladores que necesites y escálalos de forma independiente.
  • Hecho para equipos de plataforma. El descifrado nativo de secretos SOPS, el multi-tenancy mediante RBAC de Kubernetes, los artefactos OCI y las actualizaciones automatizadas de imágenes forman parte del toolkit.
  • Corrección de desviaciones. Los cambios hechos directamente contra un clúster se revierten en la siguiente reconciliación.

Primeros pasos

Instala la CLI flux, haz bootstrap de Flux en un clúster contra un repositorio de Git y añade un GitRepository y una Kustomization que apunten a tus manifiestos (YAML plano, un overlay de Kustomize o un chart de Helm). Las guías siguientes recorren las configuraciones más comunes, desde una sola aplicación hasta varios clústeres y tenants. Se escribieron con Flux 2.9 como referencia; consulta la documentación de Flux para la versión que instales.