ArgoCD est une plateforme de Continuous Delivery (CD) GitOps qui permet le déploiement de manière déclarative d’applications dans des clusters Kubernetes.
ArgoCD est un outil open source de Continuous Delivery (CD) spécifique à Kubernetes. Il permet, suivant une démarche GitOps, de déployer des ressources dans des clusters en utilisant un ou plusieurs repositories Git comme source de vérité. L’utilisation d’ArgoCD est centrée autour d’une Custom Resource appelée Application.
Dans un manifeste Application, il est possible de définir une multitude de paramètres, comme le repository source des ressources déployées, le namespace et le cluster Kubernetes de destination ou encore la stratégie de réconciliation à adopter. ArgoCD supporte plusieurs types de sources pour déployer des ressources dans Kubernetes : charts Helm, applications Kustomize, fichiers Jsonnet ou encore de simples manifestes.
Pour subvenir à des besoins plus avancés, la Custom Resource ApplicationSet et son contrôleur associé permet de générer plusieurs Applications ArgoCD à partir d’un unique manifeste. En utilisant les generators et les templates d’ApplicationSet, il est alors possible de déployer plusieurs applications dans plusieurs clusters Kubernetes, tout ceci dans une spécification centralisée !
C’est une plateforme qui trouve son intérêt dans le fait que la gestion des applications et des ressources dans Kubernetes peuvent mener à des erreurs humaines ou des incohérences. Par son fonctionnement, ArgoCD se veut simple à utiliser et à configurer : ce qui est défini dans votre repository Git représente ce qui est déployé dans votre cluster Kubernetes. En effet, il bénéficie d’une fonctionnalité qui lui permet de vérifier l’état des ressources à intervalle régulier, afin de le réconcilier automatiquement si nécessaire. Par conséquent, c’est un outil sécurisant tant pour les développeurs que pour les administrateurs.
ArgoCD se veut aussi modulaire : au-delà des ressources Kubernetes, vous pouvez gérer et mettre à jour automatiquement les versions d’images de conteneurs qui sont déployées dans votre cluster via l’ajout d’ArgoCD Image Updater, qui suit les mêmes principes GitOps. En utilisant ArgoCD Notifications, il vous est également possible d’obtenir du monitoring et de l’alerting sur le déploiement de vos applications, bien que cette fonctionnalité soit encore immature selon nous.
La grande force d’ArgoCD réside dans son interface utilisateur, qui permet en un clin d’œil de comprendre l’état actuel des ressources, leur statut de synchronisation avec le repository source ou encore l’état des Pods associés à l’Application.
En quelques clics seulement, nous arrivons vite à comprendre qu'une Application peut déployer plusieurs ressources, comme un Service ou un Deployment. À son tour, un Deployment provoque la création d’un ou plusieurs Pods, ce qui est également pris en compte dans l’interface. Il est même possible de cliquer sur le Pod en question et d’en visualiser les logs ! Pratique, non ?
Pour ces raisons, ArgoCD est devenu chez Padok le standard vers lequel se tourner lorsqu’il s’agit de déployer des applications dans Kubernetes. Chez nombre de nos clients, l’implémentation d’ArgoCD a permis aux développeurs de mettre un pied dans le monde de l’infrastructure, en utilisant un environnement rassurant et une utilisation au quotidien qui s’avère simplissime.