Aller au contenu
CI/CD & Automatisation medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Formation Flux CD — GitOps sur Kubernetes

10 min de lecture

Flux CD est un opérateur GitOps qui réconcilie en permanence l’état de votre cluster Kubernetes avec ce que décrit votre dépôt Git. Contrairement à un pipeline qui pousse des manifestes (kubectl apply), Flux tire les changements depuis Git et les applique lui-même — votre cluster devient déclaratif, auditable, et auto-réparant.

Cette formation vous guide de la première installation jusqu’à la gestion multi-tenancy en production, en couvrant Kustomize, Helm, l’automatisation des mises à jour d’images et le monitoring.

Cette formation couvre 7 modules progressifs :

Avant Flux, déployer sur Kubernetes signifiait souvent exécuter kubectl apply dans un job CI, avec des credentials cluster exposés dans la pipeline, et sans historique fiable de qui a déployé quoi et quand.

Flux renverse ce modèle : c’est le cluster qui tire les changements depuis Git, pas votre CI qui les pousse. Résultat concret : zéro credentials cluster dans vos pipelines, un historique complet d’audit par commit Git, et la capacité de revenir en arrière sur n’importe quel état du cluster.

Flux se distingue également par son architecture modulaire : là où ArgoCD est une application monolithique avec une UI centralisée, Flux est un ensemble de contrôleurs Kubernetes indépendants que vous assemblez selon vos besoins. Pas d’interface graphique native — Flux est pensé pour les équipes qui préfèrent kubectl et le CLI.

CritèreFlux CDArgoCD
ArchitectureContrôleurs modulaires, pas d’UIApplication tout-en-un avec UI
InterfaceCLI + kubectlDashboard web + CLI
Bootstrap GitFlux gère ses propres manifestes dans GitManifestes gérés manuellement
HelmHelmRelease CRD natifApplication CRD avec source Helm
Automatisation d’imagesContrôleur dédié natifVia Argo CD Image Updater (plugin)
Multi-tenancyNamespace isolation nativeAppProject system
Courbe d’apprentissagePlus raide (CLI-first)Plus douce (UI d’abord)
Préférer siÉquipe CLI-first, multi-tenancy stricteDébutants GitOps, UI nécessaire

Cette formation est conçue pour :

  • Les développeurs et DevOps qui maîtrisent les bases Kubernetes (Pods, Deployments, Services) et veulent structurer leurs déploiements en GitOps.
  • Les Platform Engineers qui déploient Flux pour plusieurs équipes et ont besoin d’isolation par namespace et de contrôle d’accès fin.
  • Les équipes passant de kubectl/Helm en CI à une approche GitOps déclarative, avec bootstrap Git et réconciliation automatique.

Connaître Kustomize et/ou Helm est un plus à partir du module 4.

À l’issue des 7 modules, vous serez capable de :

  • Bootstrapper Flux sur un cluster depuis un dépôt GitHub ou GitLab.
  • Déployer une application depuis un dépôt Git avec Kustomize et comprendre les statuts de réconciliation.
  • Gérer des releases Helm avec les CRDs HelmRepository et HelmRelease.
  • Automatiser les mises à jour d’images : Flux détecte une nouvelle image et met à jour Git automatiquement.
  • Structurer un cluster multi-tenant avec isolation par namespace et politique d’accès par équipe.
  • Configurer les alertes (Slack, Teams) et lire les métriques Prometheus exposées par Flux.

Flux introduit plusieurs Custom Resource Definitions (CRDs) dans votre cluster. Les voici regroupés par contrôleur :

CRDContrôleurRôle
GitRepositorysource-controllerDéclare un dépôt Git à surveiller
OCIRepositorysource-controllerDéclare un artefact OCI (image ou chart)
HelmRepositorysource-controllerDéclare un dépôt de charts Helm
HelmChartsource-controllerRésoud un chart depuis un HelmRepository
Kustomizationkustomize-controllerApplique un répertoire de manifestes (Kustomize ou YAML brut)
HelmReleasehelm-controllerDéploie et gère une release Helm
ImageRepositoryimage-reflector-controllerSurveille un registre de conteneurs
ImagePolicyimage-reflector-controllerFiltre les tags d’image selon une règle semver
ImageUpdateAutomationimage-automation-controllerPousse les mises à jour de tags dans Git
Alertnotification-controllerEnvoie des notifications sur événements Flux
Providernotification-controllerDéfinit le canal de notification (Slack, Teams…)
Receivernotification-controllerReçoit des webhooks entrants

Chaque module de la formation approfondit un sous-ensemble de ces objets.

PiègeImpactCorrectif
Bootstrap sans --private-key-file sur un repo privéFlux ne peut pas lire le dépôtUtiliser le deploy key généré par flux bootstrap
Kustomization sans prune: trueLes ressources supprimées de Git restent dans le clusterActiver prune: true dès le départ
Tout dans le namespace flux-systemConfusion entre ressources Flux et ressources applicativesCréer un namespace par équipe, pointer avec targetNamespace
HelmRelease sans remediation.retriesUn chart défaillant bloque silencieusementDéfinir remediation.retries: 3 + remediation.strategy: rollback
Secrets en clair dans le config-repoCredentials exposésUtiliser SOPS avec age, ou External Secrets Operator
ImageUpdateAutomation sur la branche mainUne image non testée va directement en productionCibler une branche de staging, PR automatio pour main
Pas de sourceRef explicite sur les sous-KustomizationsDépendance implicite difficile à déboguerToujours déclarer le sourceRef dans chaque Kustomization

Votre déploiement Flux CD est prêt pour la production quand :

  • Flux surveille son propre dépôt de configuration (bootstrap complet)
  • Aucun secret n’est en clair dans le config-repo (SOPS ou External Secrets)
  • Chaque équipe a son namespace dédié avec ServiceAccount et droits RBAC limités
  • prune: true est activé sur toutes les Kustomization de production
  • Les alertes de drift sont configurées (Slack, Teams ou webhook)
  • Un rollback git a été testé (git revert + flux reconcile) au moins une fois
  • Les HelmRelease ont une stratégie de remediation définie
  • L’automatisation d’images cible une branche de staging, pas main directement

Dans un modèle GitOps avec Flux, la CI ne touche jamais le cluster directement. Elle publie des artefacts (images Docker, charts Helm) et met à jour le config-repo (tag d’image, version de chart). Flux détecte le changement dans Git et applique l’état désiré sur le cluster.

Code source → CI (build + test + push image) → Config-repo (mise à jour tag)
Cluster Kubernetes ← source-controller (pull from Git)
↑ ↓
kustomize-controller ← artefact (manifestes)
kubectl apply (réconciliation)

La différence avec un pipeline classique : le cluster tire, il ne reçoit pas. Le serveur GitLab ou GitHub n’a jamais de credentials Kubernetes.

Pour suivre les modules pratiques, vous avez besoin d’un dépôt Git accessible depuis votre cluster (GitHub, GitLab ou Gitea autohébergé) :

fleet-infra/ ← Config-repo (géré par Flux)
clusters/
my-cluster/
flux-system/ ← Composants Flux (auto-générés au bootstrap)
gotk-components.yaml
gotk-sync.yaml
kustomization.yaml
apps/
base/ ← Manifestes de base
dev/ ← Overlay dev (Kustomize)
staging/ ← Overlay staging
production/ ← Overlay production
infrastructure/
sources/ ← GitRepository, HelmRepository
configs/ ← ConfigMaps, NetworkPolicies partagés
  • Flux CD est un ensemble de contrôleurs Kubernetes qui synchronise votre cluster depuis Git en mode pull.
  • Le bootstrap est la première étape : Flux s’enregistre lui-même dans Git et se gère à partir de là.
  • Flux ne dispose pas d’UI native : il s’utilise avec kubectl et le CLI flux.
  • Les Sources (GitRepository, HelmRepository…) produisent des artefacts que les contrôleurs consomment (Kustomization, HelmRelease).
  • La réconciliation est continue et auto-réparante : tout drift est corrigé sans intervention manuelle.
  • Flux est pensé pour le multi-tenancy strict : chaque équipe a ses propres namespaces, sources et droits RBAC.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn