Flux CD s’installe sur un cluster Kubernetes en une seule commande de bootstrap.
Ce guide couvre l’installation du CLI flux, la vérification de
compatibilité du cluster, le bootstrap sur GitHub ou GitLab, et les premières
commandes pour vérifier que tout fonctionne. À la fin, vous avez un Flux
opérationnel qui surveille son propre dépôt.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Installer le CLI
fluxsur votre machine - Vérifier la compatibilité de votre cluster avec
flux check --pre - Bootstrapper Flux sur GitHub ou GitLab en une commande
- Comprendre la structure créée dans votre dépôt par le bootstrap
- Diagnostiquer l’état des composants Flux avec
flux get all
Prérequis
Section intitulée « Prérequis »Avant de commencer, vérifiez que vous avez :
- Un cluster Kubernetes v1.28+ fonctionnel —
kind,k3s, ou un cluster cloud kubectlinstallé et configuré avec accès admin au cluster- Un compte GitHub ou GitLab avec droits de création de dépôt
- Un token d’accès personnel (PAT) GitHub ou GitLab avec droits
repo
Vérification des prérequis :
kubectl version --clientkubectl get nodes # Tous les nœuds doivent être ReadyInstaller le CLI flux
Section intitulée « Installer le CLI flux »La méthode recommandée utilise le script d’installation officiel Flux :
curl -s https://fluxcd.io/install.sh | sudo bashVérifiez l’installation :
flux --version# flux version 2.8.3Activez l’autocomplétion (optionnel mais utile) :
# Bashecho "source <(flux completion bash)" >> ~/.bashrc
# Zshecho "source <(flux completion zsh)" >> ~/.zshrcbrew install fluxcd/tap/fluxflux --version# flux version 2.8.3Téléchargez le binaire pour votre architecture depuis les releases GitHub :
# Linux amd64FLUX_VERSION=2.8.3curl -Lo flux.tar.gz "https://github.com/fluxcd/flux2/releases/download/v${FLUX_VERSION}/flux_${FLUX_VERSION}_linux_amd64.tar.gz"tar -xzf flux.tar.gzsudo mv flux /usr/local/bin/flux --versionVérifier la compatibilité du cluster
Section intitulée « Vérifier la compatibilité du cluster »Avant le bootstrap, vérifiez que votre cluster est compatible avec Flux :
flux check --preAttendu :
► checking prerequisites✔ Kubernetes 1.32.0 >=1.28.0-0✔ prerequisites checks passedSi vous voyez des erreurs (version Kubernetes trop ancienne, droits insuffisants), corrigez-les avant de continuer.
Bootstrapper Flux
Section intitulée « Bootstrapper Flux »Le bootstrap est une opération idempotente : vous pouvez la relancer sans risque si elle échoue ou si vous voulez reconfigurer Flux. Elle :
- Crée les manifestes des composants Flux.
- Les pousse dans votre dépôt Git.
- Les applique sur le cluster.
Créez un token GitHub PAT (Personal Access Token) avec les droits repo
(lecture + écriture sur les dépôts). Il sera utilisé uniquement pendant le
bootstrap pour créer le dépôt et pousser les manifestes.
# Exportez votre token GitHubexport GITHUB_TOKEN=<votre-token>export GITHUB_USER=<votre-username>
# Bootstrap Flux sur un nouveau dépôtflux bootstrap github \ --owner=${GITHUB_USER} \ --repository=fleet-infra \ --branch=main \ --path=clusters/my-cluster \ --personalDétail des options :
| Option | Description |
|---|---|
--owner | Votre nom d’utilisateur ou organisation GitHub |
--repository | Nom du dépôt (créé s’il n’existe pas) |
--branch | Branche à surveiller (doit exister ou --branch crée main) |
--path | Chemin dans le dépôt où Flux place ses composants |
--personal | Indique un dépôt personnel (pas d’organisation) |
export GITLAB_TOKEN=<votre-token>export GITLAB_USER=<votre-username>
flux bootstrap gitlab \ --owner=${GITLAB_USER} \ --repository=fleet-infra \ --branch=main \ --path=clusters/my-cluster \ --personalPour un groupe GitLab (namespace partagé), remplacez --owner par le nom
du groupe et retirez --personal.
export GITEA_TOKEN=<votre-token>
flux bootstrap gitea \ --hostname=gitea.example.com \ --owner=<votre-username> \ --repository=fleet-infra \ --branch=main \ --path=clusters/my-cluster \ --personalSortie attendue du bootstrap
Section intitulée « Sortie attendue du bootstrap »► connecting to github.com► cloning branch "main" from Git repository "https://github.com/user/fleet-infra.git"✔ cloned repository► generating component manifests✔ generated component manifests✔ committed component manifests to "main" ("fleet-infra")► pushing component manifests to "https://github.com/user/fleet-infra.git"► installing components in "flux-system" namespace✔ installed components✔ reconciled components► determining if source secret "flux-system/flux-system" exists► generating source secret✔ public key: ecdsa-sha2-nistp384 AAAA...✔ configured deploy key► applying source secret "flux-system/flux-system"✔ reconciled source secret► generating sync manifests✔ generated sync manifests✔ committed sync manifests to "main" ("fleet-infra")► pushing sync manifests to "https://github.com/user/fleet-infra.git"► applying sync manifests✔ reconciled sync configuration◎ waiting for Kustomization "flux-system/flux-system" to be reconciled✔ Kustomization reconciled successfully► confirming components are healthy✔ helm-controller: deployment ready✔ kustomize-controller: deployment ready✔ notification-controller: deployment ready✔ source-controller: deployment ready✔ all components are healthyComprendre la structure créée dans Git
Section intitulée « Comprendre la structure créée dans Git »Après le bootstrap, votre dépôt contient :
fleet-infra/└── clusters/ └── my-cluster/ └── flux-system/ ├── gotk-components.yaml # CRDs + Deployments des 5 contrôleurs ├── gotk-sync.yaml # GitRepository + Kustomization └── kustomization.yaml # Assemblage Kustomizegotk-components.yaml — Ce fichier contient tous les composants Flux :
les CRDs (CustomResourceDefinitions), les Deployments des 5 contrôleurs,
les ServiceAccounts et les RBAC. Ne modifiez jamais ce fichier manuellement
— utilisez flux install ou le bootstrap pour le mettre à jour.
gotk-sync.yaml — Ce fichier déclare deux objets :
- Un
GitRepositoryqui pointe vers votre dépôt. - Une
Kustomizationqui applique le contenu declusters/my-cluster/.
C’est la boucle de self-management : Flux surveille son propre dépôt et
se met à jour si vous modifiez les fichiers dans flux-system/.
Vérifier l’état de Flux
Section intitulée « Vérifier l’état de Flux »Une fois le bootstrap terminé, vérifiez que tous les composants sont sains :
# Vérifier les composants Fluxflux check
# Lister toutes les ressources Fluxflux get all
# Vérifier les pods dans le namespace flux-systemkubectl get pods -n flux-systemAttendu pour kubectl get pods -n flux-system :
NAME READY STATUS RESTARTS AGEhelm-controller-7b9b8b7c4-x2k9p 1/1 Running 0 2mkustomize-controller-6d5f9b8c9-p4m7n 1/1 Running 0 2mnotification-controller-5c8d7b6f4-r8j2l 1/1 Running 0 2msource-controller-5f7b9c8d6-k3n5q 1/1 Running 0 2mAttendu pour flux get all :
NAME REVISION SUSPENDED READY MESSAGEgitrepository/flux-system main/abc1234 False True stored artifact for revision 'main@sha1:abc1234'
NAME REVISION SUSPENDED READY MESSAGEkustomization/flux-system main/abc1234 False True Applied revision: main@sha1:abc1234Tous les objets doivent afficher READY: True.
Diagnostiquer les problèmes courants
Section intitulée « Diagnostiquer les problèmes courants »Flux ne réconcilie pas
Section intitulée « Flux ne réconcilie pas »Si un objet affiche READY: False, inspectez les événements :
# Voir les événements d'une Kustomizationflux events --for kustomization/flux-system
# Voir les logs du contrôleurkubectl logs -n flux-system deploy/kustomize-controller | tail -20Le dépôt Git est inaccessible
Section intitulée « Le dépôt Git est inaccessible »# Vérifier la Source GitRepositoryflux get source git
# Forcer une reconcile immédiateflux reconcile source git flux-systemSi la source affiche une erreur d’authentification, vérifiez la deploy key :
kubectl describe secret -n flux-system flux-systemUn pod ne démarre pas
Section intitulée « Un pod ne démarre pas »kubectl describe pod -n flux-system <nom-du-pod>kubectl logs -n flux-system <nom-du-pod> --previousCommandes de base à retenir
Section intitulée « Commandes de base à retenir »| Commande | Description |
|---|---|
flux check | Vérifie l’état des composants Flux |
flux get all | Liste toutes les ressources Flux et leur état |
flux get sources git | Affiche les GitRepository |
flux get kustomizations | Affiche les Kustomizations |
flux reconcile source git <nom> | Force la resynchronisation d’un dépôt |
flux reconcile kustomization <nom> | Force la réconciliation d’une Kustomization |
flux events | Affiche les événements récents |
flux logs | Affiche les logs des contrôleurs |
flux suspend kustomization <nom> | Met en pause une Kustomization |
flux resume kustomization <nom> | Reprend une Kustomization suspendue |
À retenir
Section intitulée « À retenir »- Le CLI
fluxs’installe avec le script officiel ou Homebrew. flux check --prevérifie la compatibilité avant le bootstrap.flux bootstrapest idempotent : on peut le relancer sans risque.- Le bootstrap crée une deploy key SSH stockée dans le Secret
flux-system/flux-system. - Flux se gère lui-même : modifier
gotk-sync.yamldans Git met à jour Flux. flux get allest la commande de diagnostic principale.