Accueil Nos publications Blog Argo, Flux, Kargo : 3 manières d’aborder le GitOps sur Kubernetes

Argo, Flux, Kargo : 3 manières d’aborder le GitOps sur Kubernetes

Signe infini DevOps

Sommaire

  1. Introduction
  2. Argo CD, outil de déploiement continu pour Kubernetes
  3. L’approche GitOps avec Flux
  4. Kargo, orchestrez le cycle de vie des applications sur Kubernetes
  5. Conclusion

Introduction

Le terme GitOps est de plus en plus utilisé au fil des ans et en devient même un incontournable. Mais qu’est-ce que réellement le GitOps ?

Le GitOps c’est la concaténation des termes Git et Ops pour Git et opérationnelles. En d’autres termes, le GitOps vise à se baser sur un réferentiel commun (GitLab, GitHub ou AzureDevOps) pour apporter des modifications ou améliorations à notre application. Pendant la Kubecon 2024, j’ai pu assister à de nombreuses conférences sur le sujet, rencontrer les acteurs du marché et ainsi vous faire un rapide retour d’expérience.

L’approche GitOps avec Argo CD

Lors de la première journée à la KubeCon, j’ai eu l’opportunité de participer à l’ArgoCon, une conférence autour d’Argo CD par les différents acteurs utilisant Argo CD et les concepts GitOps qui y sont associés. Une phrase résumant l’approche GitOps m’a profondément marqué durant cette conférence : Argo is CD, not CI. Pour résumer, Argo CD est utilisé pour du continuous delivery et non du continuous integration, autrement dit Argo CD va se baser sur ce référentiel commun pour apporter les modifications en temps réel lors du cycle de vie de nos applications. Nous pouvons présenter Argo CD à travers 4 fonctionnalités :

Logo ArgoCon Europe
  • ArgoCD : Gestion du CI pour le déploiement de nos applications sur Kubernetes.
  • Argo Events : Automatisation des flux avec des déclencheurs basés sur des événements.
  • Argo Rollout : Possibilité de faire machine arrière en cas de déploiement avorté ou de rollback d’une application.
  • Argo Workflow If you can do a thing in a normal K8S pod, you can do it in a worklow : Orchestration des flux de travail sur Kubernetes.
Argo workflows

Durant cette semaine Argo a notamment révélé la liste des fonctionnalités qui seront améliorées au fil de l’année 2024 :

Argo CD

Nouvelles fonctionnalités en cours de développement :

  • Multiples sémaphores
  • Améliorations des métriques, télémétrie ouverte
  • Contrôle de la concurrence
  • Contrôleur évolutif horizontalement

Correctifs de haute priorité en cours de développement :

  • Informateurs pour les ConfigMaps, régression du spam “invalid configmap”
  • Rétrogradations de la fusion de l’API+UI des listes de workflows archivés et en direct

Argo Rollouts

Focus sur les plugins :

  • Fournisseurs de métriques (2)
  • Routeurs de trafic (6)

Focus sur l’expérience utilisateur (UX) :

  • Rafraîchissement de l’interface utilisateur (UI)
  • Nouvelle interface utilisateur pour les AnalysisRuns

L’approche GitOps avec Flux

Flux, un des autres acteurs du GitOps était aussi présent lors de la KubeCon 2024. Si je devais résumer Flux en une phrase, j’utiliserais celle-ci : Flux is the foundational loyer for Continuous Delivery Platforms. Dans les nombreuses conférences auxquelles j’ai pu assister, les nouveautés qui seront implémentées au cours de cette année 2024 ont été annoncées. Avant de détailler les futures fonctionnalités de Flux, nous allons d’abord aborder les concepts clé de l’application :

  • GitOps Toolkit : Ensemble d’outils, de contrôleurs et d’API Flux, utiles pour faciliter la livraison continue de flux sur Kubernetes, favorisant une approche déclarative et GitOps de nos workflows.
  • Sources : Référentiel sur lequel nous configurons l’état souhaité de notre application (GitRepository, OCIRepository, HelmRepository, Bucket).
  • Reconciliation : Cette fonctionnalité s’assure que nous avons bien l’état souhaité de notre système par rapport à l’état actuel de ce-dernier.
  • Kustomization : Permet de gérer des configurations spécifiques pour le déploiement de nos applications dans un cluster Kubernetes. Flux facilite leur intégration lors du déploiement continu à partir de notre référentiel Git par exemple.
  • Boostrap : Permet l’installation des composants Flux sur notre cluster Kubernetes.

Flux v2.3 (T2 2024) : Mise en production des API Flux Helm et des fonctionnalités Flux Helm

  • HelmRepository
  • HelmChart
  • HelmRelease

Flux v2.4 (T3 2024) : Mise en production des API d’automatisation d’images Flux et de l’API de stockage compatible S3

  • ImageUpdateAutomation
  • ImagePolicy
  • ImageRepository
  • Bucket

L’approche GitOps avec Kargo

Nous pourrons aussi parler de Kargo, un outil utilisé pour gérer le cycle de vie de nos applications sur Kubernetes. Kargo repose sur le principe GitOps et est intégré à plusieurs technologies comme Argo CD. Voici les différents concepts clés de l’application ci-dessous :

  • Project : une collection de ressources Kargo qui vont nous permettre de décrire une ou plusieurs pipelines.
  • Stage : l’équivalent de nos environnements (test, prod, preprod).
  • Freight : une référence à nos artifacts versionnés
    – Container : Docker hub, Harbor
    – Kubernetes manifest : Git
    – Helm Chart : Git
  • Warehouse : permet de détecter les changements sur les différents repositories et d’apporter les modifications vers l’état souhaité.
  • Promotion : permet de déplacer une freight à une étape spécifique de notre pipeline (stage).

Conclusion

Vous l’avez compris à travers ce retour d’expérience, le cycle de vie de nos applications sur Kubernetes tend à croître sur GitOps. Celui-ci étant étroitement lié au DevOps.

La KubeCon s’est avérée être un événement exceptionnel qui a offert une immersion profonde dans l’écosystème dynamique du cloud native. De la présentation des dernières innovations technologiques à des discussions enrichissantes sur les meilleures pratiques et les défis actuels, chaque moment a été une source d’inspiration pour les professionnels du Cloud.

L’un des thèmes clés de cette édition a été l’émergence de GitOps comme une méthode révolutionnaire pour gérer l’infrastructure et les applications sur Kubernetes. GitOps incarne l’évolution vers une approche plus déclarative, automatisée et collaborative pour le déploiement et la gestion des applications cloud native. En adoptant GitOps, les équipes peuvent rationaliser leurs processus de déploiement, améliorer la cohérence opérationnelle et accroître la fiabilité de leurs systèmes.

Vous souhaitez en savoir plus ? Contactez-nous !