Débuter avec Flux sur Kubernetes

Print Friendly, PDF & Email

Lors d’un précédent article, nous avions découvert l’intérêt de Helm. On peut le résumer à un outil de templating et de packaging dédié à Kubernetes. On dipose d’un bon outil pour industrialiser vos déploiement l’orchestrateur de conteneurs.

Cependant, Helm ne dispose pas de capacités nécessaires pour déployer ses charts ou plus simplement ses déploiements. Il lui faut donc un outil pour l’aider à accomplir une tâche plus complète de CI/CD.

Ainsi, Flux fait partie de ses outils complémentaires à Helm. Cet outil créé par Weave permet de gérer le déploiement à partir d’un dépôt (qu’il vienne de github ou de gitlab…).

Ainsi la combinaison de ces deux outils permet la répartition des tâches suivantes :

  • helm : via les charts, vous pouvez décrire et templatiser les différentes ressources kubernetes pour vos déploiements
  • flux : permet de synchroniser à fréquence régulière des dépôts (pouvant être des charts helm mais pas nécessairement). Flux permet également de gérer les mises à jour d’images (docker).

Flux est donc un outil important pour la mise en oeuvre d’une stratégie de gitops à partir d’un mode pull. En effet, flux, une fois installé, tire les éléments dans le cluster.

Principales fonctions de flux

Les principales fonctionnalités de flux sont les suivantes :

  • scrutation à fréquence régulière d’un dépôt git (5min par défaut)
  • définition de branches ou tags à prendre en compte
  • déployable sous forme d’opérateur dans k8s
  • mise à disposition d’un client fluxctl pour gérer les interactions avec l’opérateur (gestion des version, rollback…)
  • capacité de garbage collector pour nettoyer les ressources n’existants plus dans le dépôt
  • mise à disposition d’un provider terraform pour flux (et pour helm)
Découvrez  Formation et cours complet Helm, c'est parti !!!

Installation de flux

Comme de nombreux outils associés à k8s, flux se base sur le kubeconfig local. Ainsi il peut rapidement et facilement se connecter à un cluster et éventuellement passer sur un autre cluster.

Comment l’installer ? Commençons par installer le client qui pourra ensuite installer l’opérateur pour vous.

Si vous utilisez ubuntu et snap

sudo snap install fluxctl

Sinon vous pouvez installer directement le binaire de cette manière :

wget https://github.com/fluxcd/flux/releases/download/1.21.0/fluxctl_linux_amd64
sudo mv fluxctl_linux_amd64 /usr/local/bin/fluxctl
sudo chmod 755 /usr/local/bin/fluxctl

Maintenant que le client est installé, il est en mesure d’utiliser votre kubeconfig. Vous pouvez donc passer la commande suivante (à adapter à votre situation).

kubectl create ns fluxcd

fluxctl install --git-email=moi@moi.com --git-url=git@gitlab.com:xavki/testflux.git --git-path=workloads --namespace=fluxcd | kubectl apply -f -

Nous créons donc un namespace dédié à flux et nommé fluxcd.

Puis nous lançons la commande fluxctl install en précisant :

  • –git-email : le mail (sans incidence)
  • –git-url : la localisation du dépôt à synchroniser en utilisant une connexion ssh
  • –git-path : le ou les répertoires à synchroniser
  • –namespace : le namespace où l’opérateur sera installé
  • et enfin on pipe la sortie dans un kubectl apply

A partir de cette étape flux est installé et dispose d’une clef privée. Nous devons donc ajouter la clef publique pour donner à flux la permission d’utiliser le dépôt git en question. Vous pouvez récupérer cette clef publique avec cette commande :

fluxctl identity --k8s-fwd-ns fluxcd

Voilà ! Nous venons de faire nos premiers pas et flux est installé. Il commence déjà à synchroniser les fichiers de ressources kubernetes contenues dans ce répertoire.

Si vous souhaitez en savoir plus sur Helm, je vous invite à regarder la formation Helm disponible dans cette playlist.

Découvrez  Kubectl quelques commandes utiles pour commencer