Argo CD : principes et fonctionnement
7 mars 2023
Introduction
Argo CD est l’un des projets les plus populaires actuellement au sein des différentes CD disponibles pour Kubernetes. Mais concrètement, de quoi est-il capable ? Quel est son mode de fonctionnement ?
Dans cet article, nous vous expliquerons son principe de fonctionnement.
Avant de présenter Argo CD, revenons sur la genèse du projet qui l’a vu naître : le projet Argo.
Star history des différents projets Argo CD
Le projet Argo est une série de projets open source liés à la gestion des flux de travail (workflow) basé sur Kubernetes. Dès la création de la société, l’ensemble des outils ont été publiés en open source.
- Argo Workflows : Le premier projet Argo a été Argo Workflows, qui a été créé en 2017 par Applatix, une start-up spécialisée dans le cloud computing. Argo Workflows a été publié en open source en janvier 2018.
- Argo CD : En août 2018, Argo a lancé un deuxième projet appelé Argo CD, qui est une solution de déploiement continu (CD) pour Kubernetes. Argo CD a été publié en open source en novembre 2018.
- Argo Events : En février 2019, Argo a annoncé Argo Events, un projet qui fournit une infrastructure d’événements pour Kubernetes. Argo Events a été publié en open source en mars 2019.
- Argo Rollouts : En mai 2019, Argo a lancé Argo Rollouts, une solution de déploiement Canary pour Kubernetes. Argo Rollouts a été publié en open source en septembre 2019.
En Avril 2020, le projet est admis au sein du CNCF Incubator, lui permettant de gagner encore en visibilité. Le 6 décembre 2022, le projet est nommé Graduated Project au sein du CNCF. L’application est ainsi jugée suffisamment stable et est déjà utilisée en production dans des environnements techniques significatifs.
Présentation de Argo CD
Argo CD est un outil de déploiement continu pour Kubernetes qui permet aux équipes de livrer rapidement et en toute sécurité des applications dans un environnement Kubernetes. Il est conçu pour rendre la gestion et la synchronisation des ressources Kubernetes plus facile et plus efficace.
Argo CD dispose d’une interface utilisateur Web conviviale qui facilite la visualisation et la gestion des applications déployées.
Exemple d’application sur l’interface Argo CD
L’outil permet le déploiement continu d’applications en surveillant les modifications du dépôt de code et en déployant automatiquement les modifications.
Il prend en charge la gestion des versions, ce qui facilite le suivi des modifications et permet le déploiement de versions spécifiques de l’application.
Argo CD valide les ressources Kubernetes avant leur déploiement, ce qui garantit la qualité des déploiements et réduit les risques d’erreurs de configuration.
Enfin, il peut être intégré avec des outils CI/CD pour créer un pipeline complet de déploiement continu.
Et plus récemment, des fonctionnalités avancées de gestion des autorisations ont été ajoutées, ce qui permet de définir finement les rôles et les accès aux ressources Kubernetes.
Le RunFlow
Le run flow Argo CD et ses grandes étapes
Le fonctionnement d’Argo CD peut être décrit en quatre étapes principales :
- Récupération du code :
Argo CD récupère le code source de l’application depuis un dépôt de code Git. Ce référentiel peut être considéré comme la source de vérité : celle qui définit l’état cible (target state) de l’infrastructure. - Réconciliation :
Argo CD compare l’état actuel de l’infrastructure avec l’état cible défini dans le référentiel Git. Si des différences sont détectées, Argo CD détermine les actions nécessaires pour synchroniser l’infrastructure réelle avec l’état cible. - Présentation :
Argo CD présente les actions à effectuer pour amener l’infrastructure à l’état cible. Cela peut inclure la création ou la suppression de ressources Kubernetes, la mise à jour de la configuration de ces ressources, etc. Les actions sont présentées dans un tableau de bord où l’utilisateur peut les examiner et les approuver ou les rejeter. - Déploiement :
Une fois que l’utilisateur a approuvé les actions présentées par Argo CD, celles-ci sont appliquées sur l’infrastructure réelle pour la synchroniser avec l’état cible. Argo CD suit l’état des actions en temps réel et fournit des informations détaillées sur les éventuelles erreurs. L’utilisateur peut également annuler les actions en cours de déploiement si nécessaire.
Les principes
Les principes
Le principe fondamental d’Argo CD est la synchronisation (sync) continue de l’état désiré de l’infrastructure avec son état réel (live state). En d’autres termes, l’outil s’assure que l’état de l’infrastructure correspond en permanence à l’état défini par le code d’infrastructure au sein du dépôt de code (Infra as Code).
Argo CD gère les applications, qui sont des groupes de ressources Kubernetes définies par un manifeste.
Chaque application définit sa source, qui peut être soit :
– Un ensemble de fichier yaml rassemblés au sein d’un dépôt de code git
– Un chart helm sur un dépôt Helm
L’état cible (target state) d’une application est l’état souhaité de l’application tel que représenté par le code infrastructure stocké dans le dépôt de code Git, tandis que l’état réel (live state) est l’état actuel de l’application au sein du cluster Kubernetes, comprenant les pods, les services et d’autres ressources.
Le statut de synchronisation (sync status) indique si l’état réel correspond à l’état cible. Si la synchronisation est requise, Argo CD effectue une opération de synchronisation (sync) pour amener l’application à son état cible en appliquant les modifications nécessaires sur le cluster Kubernetes. Le statut de l’opération de synchronisation indique si la synchronisation a réussi ou échoué.
Argo CD utilise également une fonction de rafraîchissement (refresh) pour comparer le code le plus récent dans Git avec l’état réel de l’application. Cela permet à Argo CD de détecter les différences et de les résoudre en effectuant une nouvelle opération de synchronisation.
Enfin, Argo CD surveille la santé de l’application pour s’assurer qu’elle fonctionne correctement et qu’elle puisse traiter les demandes. Le statut de santé (health) indique directement si l’application est fonctionnelle ou non.
Conclusion :
En conclusion, Argo CD est un outil de déploiement continu pour Kubernetes qui offre une solution complète pour gérer et synchroniser les ressources Kubernetes.
Avec ses fonctionnalités avancées de validation, de gestion des versions, et de gestion des autorisations, Argo CD facilite le processus de déploiement continu des applications Kubernetes.
En outre, son interface utilisateur conviviale et intuitive en fait un outil facile à utiliser par les équipes.
Argo CD est un choix solide pour les équipes qui cherchent à améliorer leur processus de déploiement et à accélérer la mise sur le marché de leurs applications Kubernetes.