Contrôler le comportement de synchronisation : intervalles, prune, correction de dérive et rollback
Décidez quand Flux applique les changements, ce qu'il supprime, comment le mettre en pause et comment annuler un mauvais déploiement.
Les valeurs par défaut de Flux diffèrent de celles des outils qui attendent une synchronisation manuelle. Une Kustomization Flux s’applique selon un calendrier et corrige la dérive à chaque exécution. Ce que vous contrôlez, c’est la fréquence, ce qui est supprimé, quand attendre la bonne santé des ressources et quand mettre en pause. Ce guide passe en revue chaque réglage en utilisant la Kustomization webapp du guide précédent.
Intervalles : à quelle fréquence Flux regarde et applique
Deux intervalles contrôlent le timing, et ils sont indépendants :
- L’intervalle du
GitRepositorydétermine à quelle fréquence Git est interrogé pour de nouveaux commits. - L’
intervalde la Kustomization détermine à quelle fréquence les manifestes sont réappliqués et la dérive corrigée, même si Git n’a pas changé.
spec:
interval: 10m
retryInterval: 2m
retryInterval est le délai d’attente avant de réessayer après une réconciliation échouée. Pour réagir immédiatement plutôt qu’attendre, déclenchez une réconciliation à la main pendant vos tests :
flux reconcile kustomization webapp --with-source
--with-source rafraîchit d’abord la source Git puis l’applique. En production, configurez un webhook pour que les push Git déclenchent une réconciliation sans interrogation fréquente (voir le guide sur les notifications).
Ajouter le pruning
Par défaut, Flux crée et met à jour les ressources mais ne supprime rien. Si vous renommez ou retirez un manifeste dans Git, l’ancien objet reste dans le cluster. Activez explicitement la suppression :
spec:
prune: true
Pour l’essayer, renommez le Deployment dans apps/webapp/deployment.yaml de webapp en webapp-v2, committez et réconciliez. Flux crée le nouveau Deployment et supprime l’ancien. Flux suit les objets qu’il a appliqués via un inventaire, il ne supprime donc jamais que ce qu’il a créé. Le pruning supprime de vrais objets, activez-le donc délibérément et soyez prudent avec les ressources qui conservent un état.
Pour protéger un objet du pruning, annotez-le dans le manifeste :
metadata:
annotations:
kustomize.toolkit.fluxcd.io/prune: disabled
Correction de dérive
À chaque réconciliation de la Kustomization, l’état désiré de Git est de nouveau appliqué, donc les modifications manuelles sont annulées. Testez-le :
kubectl scale deployment webapp-v2 -n webapp --replicas=5
flux reconcile kustomization webapp
kubectl get pods -n webapp
Flux ramène le Deployment aux deux réplicas déclarés dans Git. Il n’y a pas de réglage « self-heal » distinct à activer. Ce comportement est celui par défaut, et c’est ce qui fait de Git l’unique source de vérité.
Si vous devez faire un changement temporaire à la main, par exemple pendant un débogage, mettez d’abord Flux en pause (section suivante). Si un objet doit être géré en dehors de Flux, annotez-le dans Git :
metadata:
annotations:
kustomize.toolkit.fluxcd.io/reconcile: disabled
Les versions récentes de Flux (2.9) ajoutent aussi des règles d’ignorance de champs pour le server-side apply, qui vous permettent d’indiquer à Flux de laisser certains champs tranquilles, comme un nombre de réplicas géré par un autoscaler. Consultez la référence de Kustomization pour la syntaxe exacte de votre version.
Attendre la bonne santé et ordonner vos déploiements
Par défaut, Flux signale un succès dès que l’API server accepte les manifestes. Définir wait: true lui fait attendre que les ressources soient prêtes, et timeout borne l’attente :
spec:
wait: true
timeout: 2m
Utilisez dependsOn pour qu’une Kustomization attende une autre, par exemple pour installer un ingress controller avant les applications qui en ont besoin :
spec:
dependsOn:
- name: infrastructure
La dépendance doit être Ready avant que cette Kustomization commence à se réconcilier.
Suspendre et reprendre
Pour mettre en pause la réconciliation sans rien supprimer :
flux suspend kustomization webapp
# faire des modifications manuelles, déboguer, puis :
flux resume kustomization webapp
Pendant la suspension, Flux ignore l’objet et les modifications manuelles restent en place. La reprise déclenche une réconciliation qui remet le cluster en accord avec Git, n’oubliez donc pas de reprendre. Suspendre est l’équivalent Flux de couper l’automatisation pour un environnement.
Revenir en arrière en toute sécurité
Flux n’a pas de commande rollback pour les Kustomizations, car Git est l’historique. Pour annuler un mauvais changement :
git revert <bad-commit>
git push
flux reconcile kustomization webapp --with-source
Flux fait converger le cluster vers l’état rétabli, et Git conserve une trace honnête de ce qui s’est passé. Pour les urgences où le cluster doit d’abord cesser de bouger, suspendez la Kustomization, corrigez, poussez le revert, puis reprenez.
Les releases Helm sont différentes : le helm-controller peut annuler automatiquement une mise à niveau échouée, ce que le guide Helm couvre.
Garder la production délibérée
Comme l’automatisation est activée par défaut, le contrôle de la production se fait dans Git plutôt que par un bouton de « synchronisation manuelle ». Schémas courants :
- Protéger la branche de production et exiger l’approbation des pull requests.
- Pointer le
GitRepositoryde production vers un tag ou une plage semver (ref.tagouref.semver) pour que la production ne change que lorsque vous coupez une release. - Utiliser
flux suspendpendant les gels de changements.
Guides populaires
-
Push ou pull : comment Flux livre sur Kubernetes Pourquoi une livraison pilotée par Git et basée sur le pull change la façon de déployer, de sécuriser et de restaurer les clusters. -
Déployer votre première application avec un GitRepository et une Kustomization Pointez Flux vers des manifestes dans Git à l'aide d'une ressource Kustomization et regardez la synchronisation se faire. -
Automatiser les mises à jour d'images avec Flux Image Automation Laissez Flux détecter les nouveaux tags d'images de conteneurs et les committer dans Git. -
Configurer le multi-cluster avec Flux Gérez plusieurs clusters depuis un seul dépôt, avec une infrastructure partagée et des différences propres à chaque cluster. -
Flux CD ou Argo CD : choisir un outil GitOps Comparez l'architecture, l'interface, Helm, les secrets, la multi-tenance et l'automatisation d'images pour choisir le bon outil.