Contactez-nous

Landscape Kubernetes - CI/CD

FLUX CD

flux-horizontal-color

C'EST QUOI FLUX CD ?

Flux CD est une solution open source de déploiement GitOps. Elle permet de synchroniser automatiquement des manifestes Kubernetes hébergés sur un repo Git avec un cluster Kubernetes. Initialement développée par des personnes de Weaveworks, Flux est aujourd'hui incubé au sein de la Cloud Native Computin Foundation (CNCF) sous le statut Graduated, signe de sa maturité.

Profitant pleinement du principe de boucle de réconciliation de Kubernetes et grâce à son extensibilité, Flux permet de déployer des composants sous de multiples formats et cela de manière simple et rapide.

Flux CD est plus communément appelé Flux V2 pour le numéro de version majeure du produit. Contrairement à son prédécesseur Flux V1 qui était une application monolithique, Flux V2 sépare ses fonctionnalités en plusieurs controllers, ce qui le rend beaucoup plus performant et plus apte à déployer de nouvelles fonctionnalités.

CONTEXTE D'UTILISATION

GitOps

Flux CD permet de mettre un premier pas dans le monde du GitOps sans investir énormément

Kubernetes friendly

Flux CD s'intègre très bien pour gérer le déploiement dans un environnement Kubernetes.

Source de vérité

Flux CD permet d’instaurer vos dépôts Git comme une source de vérité unique

Réconciliation

Flux CD permet de pallier toute déviation de l'état désiré du système

AVANTAGES ET INCONVENIENTS

AVANTAGES

Possibilité de réconciliation permanente de l’état désiré du cluster
Simple d'utilisation
Peu de maintenance à prévoir
Utilise des fonctionnalités Kubernetes native pour son fonctionnement
Fonctionnement en mode "pull" qui sécurise l'accès au cluster
Mise à jour automatique des versions d’image depuis le dépôt Git
Support du format OCI pour déployer des manifestes

INCONVENIENTS

Moins de fonctionnalités "user friendly" par rapport à ArgoCD (interface graphique, approbation manuelle, ...etc.)
Authentification unique via le RBAC Kubernetes (pas de SSO)
Nécessite une installation sur chaque cluster dans un contexte multi-cluster
Mise en place nécessaire d’une politique de gestion des changements sur le dépôt Git
Duplication de code dans le cadre d’un déploiement multi-environnement

 

RETOUR D'EXPERIENCE WESCALE

Utilisation de Flux CD V2 pour les déploiements applicatifs et d'infrastructure sur environ 40 clusters Kubernetes dans un environnement multicloud.

Dans le cadre du déploiement de composants d'infrastructure, tous les manifestes Kubernetes sont stockés dans un unique dépôt Git. Chaque environnement et/ou cluster dispose de son propre dossier dans lequel se retrouvent les manifestes adaptés au contexte (ressources, configuration, secrets, ...etc).

Chaque cluster a alors sa propre instance de Flux installée localement et qui va observer son dossier correspondant dans le dépôt Git. Même si l'installation ou la mise à jour de Flux est possible via Flux lui-même, nous déconseillons d'adopter ce comportement et de le déployer via un autre biais (par exemple Terraform) afin d'avoir deux cycles de vie bien distincts. En effet, si la mise à jour de Flux par Flux échoue et que celui-ci ne redémarre pas, vous allez bloquer tous vos déploiements jusqu'à ce que le problème soit résolu manuellement.

De manière générale, nous préconisons également de ne pas installer les Custom Resource Definition (CRD) de vos composants via leur chart Helm car en cas de mauvaise manoeuvre avec Flux qui entraine la suppression de cette release, cela va avoir pour effet de supprimer toutes les instances de ces CRD et faire de gros dégâts.

L'utilisation de Flux impose une politique de changements bien structurée au niveau de Git. Etant donné que tout ce qui est commit dans la branche master (ou main) se retrouve déployé sur votre cluster Kubernetes, cela suppose d'avoir une procédure bien établie pour valider tout changement avant d'être merge.

Point d'attention également sur la migration de Flux V1 vers Flux V2 qui peut générer des incidents si elle n'est pas effectuée correctement. Pour éviter les inattendus, nous vous conseillons de bien prendre connaissance des différences entre les deux versions et de suivre attentivement la stratégie de migration de la documentation officielle.


Pour résumé, Flux V2 est un outil GitOps qui fonctionne très bien et qui, dans ce contexte client, a permis aux équipes de déployer des changements sur multiples environnements à n’importe quel moment, jusqu’à une dizaine de fois par jour en production.

 

LIENS UTILES