2 minutes pour comprendre... Flux
Sommaire
En 2 minutes #
Le déploiement d’applications sur nos clusters Kubernetes devient de plus en plus complexe. Entre la multitude de format disponibles pour le packaging des différentes ressources nécessaire au fonctionnement des applications (manifestes YAML, kustomize, helm, …), la gestion des configurations multi-environnements (dev, test, prod, …) et le suivi des mises à jour, on peut facilement se laisser submerger.
Afin de répondre à ces problématiques, le principe de GitOps est né. En quelques mots, GitOps repose sur l’utilisation d’un système de contrôle de version (le plus souvent, Git) comme source unique de vérité pour la configuration déclarative de l’infrastructure et des applications. Chaque modification validée dans le dépôt déclenche des processus automatisés qui synchronisent l’état du système avec la configuration déclarée, garantissant ainsi traçabilité, cohérence et sécurité dans les déploiements.
S’appuyant sur les principes GitOps, Flux est une solution qui automatise le déploiement d’applications sur Kubernetes en synchronisant en continu l’état du cluster avec des configurations stockées dans un dépôt Git, éliminant ainsi les déploiements manuels et les incohérences entre la configuration désirée et la réalité opérationnelle. Techniquement, il repose sur des contrôleurs qui surveillent les changements dans différentes sources (dépôts Git, dépôts Helm, …) et déclenchent automatiquement les actions nécessaires pour appliquer les modifications en conséquence.
Flux est souvent employé pour :
- déployer des applications via Helm ou Kustomize
- assurer une cohérence entre l’infrastructure déclarative et l’état réel du cluster
- automatiser la mise à jour d’images conteneurisées
En savoir plus… #
Fonctionnalités principales #
- surveillance en temps réel des différentes sources (Git, Helm, OCI, Bucket)
- déploiement automatisé
- support de Helm et Kustomize
- gestion déclarative des configuration
- audit et tracabilité
Architecture #
Flux se compose de différents contrôleurs et composants qui fournissent des API composables. Les principaux composants sont les suivants :
- source controller : fournit une interface commune pour la récupération des artéfacts (Git, Helm, OCI, Bucket)
- kustomize controller : gère les manifestes Kubernetes assemblés avec Kustomize
- helm controller : gère les manifestes Kubernetes assemblés avec Helm
- notification controller : gère les évènements entrants (changements de source) et sortants (notifications externes)
Ci-dessous un schéma d’architecture global des interactions entre ces différents composants :

Ecosystème #
Intégrations #
Flux est intégré au sein de nombreux produits et services utilisés par le grand public, et ce de manière totalement transparente pour les utilisateurs. Certains de ces produits incluent :
La liste complète des intégrations peut être trouvée sur le site officiel.
UI/GUI #
Flux est avant tout une collection de contrôleurs Kubernetes. Bien qu’une interface en ligne de commande (CLI) soit disponible, il peut parfois être difficile d’inspecter les actions réalisées et les ressources déployées par Flux.
Afin de simplifier l’introspection des ressorces et composants de Flux, différents projets ont vu le jour :
- Capacitor : UI spécifique à Flux
- Kubeapps : application web permettant le déploiement, la gestion et la mise à jour d’applications sur un cluster Kubernetes ; supporte Flux
- Headlamp Flux plugin : Headlamp est une application web offrant une interface graphique pour les clusters Kubernetes ; le plugin Flux permet de visualiser l’installation de Flux et réaliser diverses opérations sur les ressources Flux
Extensions #
La communauté propose des contrôleurs additionnels afin de supporter d’autres formes de packaging d’applications Kubernetes telles que Jsonnet ou KCL, mais également des contrôleurs supportant des ressources ne représentant pas des applications Kubernetes telles que Terraform/OpenTofu ou AWS CloudFormation. La liste complète des extensions peut être trouvée sur le site officiel.
Projets connexes #
Mention particulière au projet d’opérateur flux-operator qui permet d’automatiser l’installation, la configuration et les mises à jour des contrôleurs Flux de manière déclarative. Cet opérateur permet notamment de s’affranchir de la phase de bootstrap, souvent manuelle, et simplifie la configuration de Flux en mode multi-tenant.
Dans la continuité du travail des contrôleurs Flux, on peut également mentionner Flagger, un opérateur de déploiement progressif créé par les mêmes auteurs et parfaitement intégré à Flux et son écosystème.
Bon à savoir #
- projet “graduated” de la CNCF
- très léger, fonctionnel et extensible
- compatible avec les outils et produits communément utilisés dans l’industrie (Git, GitHub, GitLab, Bibucket, S3, manifestes YAML, Helm, Kustomize, OCI, …)
- support de la multi-tenancy
- alerting inclus
- sécurisé par défaut (+ liste des bonnes pratiques de sécurité à respecter)
- support de multiples gestionnaires de secrets
Produits similaires #
ArgoCD est un outil de déploiement continu déclaratif basé sur GitOps, tout comme Flux. Il est cependant considéré, à raison, comme plus lourd et plus complexe à utiliser que Flux mais à l’avantage indéniable de fournir par défaut une interface graphique complète et versatile.