Contact

Landscape Kubernetes - CI/CD

ARGO CD

argo-icon-color

C'EST QUOI ARGO CD ?

Argo CD est un outil open source qui permet d’effectuer le déploiement déclaratif d'applications sur Kubernetes en respectant les patterns GitOps. Il fait partie de la CNCF avec le niveau Graduated. Sur la base d’éléments déclarés dans un gestionnaire de source Git, Argo CD permet le déploiement automatisé des ressources Kubernetes.

De nombreuses entreprises ont adopté Argo CD (Red Hat, Sumo Logic, Ticketmaster, Twilio, and Volvo) et l'outil bénéficie d'une communauté active, d'une bonne maturité et de mises à jour régulières. Argo CD s'intègre bien avec la suite d'outils Argo Projects:  Argo Events, Argo Workflows et Argo Rollout ce qui permet de répondre à des cas d’usages plus complexes.

CONTEXTE D'UTILISATION

GitOps

ArgoCD est un des meilleurs outils pour appliquer les patterns GitOps dans votre équipe ou organisation.

Kubernetes friendly

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

Source de vérité

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

Réconciliation

ArgoCD 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
Interface graphique très complète
Gestion des droits très fine (utilisateurs et applicatifs)
Intégration avec plusieurs outils: Helm , Kustomize, plugins custom
Prise en compte de multiples formats : Jsonnet, Yaml, Json
Support du multi-cluster Kubernetes
Intégration avec la suite Argo et des outils externes

INCONVENIENTS

Prérequis de maîtrise de Git 
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 d'ArgoCD dans le secteur de la banque (Fintech) pour répondre à un besoin d'augmenter le nombre de déploiements sur un environnement de staging.

ArgoCD a été mis en place pour déployer un environnement complet du produit client. Chaque environnement correspond à une centaine de pods applicatifs et est décliné pour chaque branche de développement de nouvelle fonctionnalité.

Suite à cette expérience, nous conseillons aux personnes voulant utiliser ArgoCD d'amorcer une phase de réflexion autour de l'architecture Git en terme de nombres de dépôts mais également en terme de permissions. Avoir une politique de gestion des changements bien établie permettra d'être beaucoup efficace pour déployer des changements en production.
Nous préconisons également de bien séparer les outils globaux (ingress controller, external-dns, cert-manager, ...etc) et les applications métiers dans des dépôts bien distincts. En effet, dans la majorité des cas, ces briques logicielles ne sont pas gérées par les mêmes équipes et peuvent être soumises à des contraintes de déploiement autres qui influe sur leur cycle de vie.

Un autre point sur lequel il faut prêter attention, lors de la mise en place d'ArgoCD, est la consommation de ressources. Contrairement à son compère FluxV2, le poulpe a tendance a consommer une quantité assez importante de ressources surtout quand il doit gérer beaucoup de manifestes Kubernetes. Par conséquent, nous conseillons de déployer ArgoCD sur des nœuds différents des applicatifs métiers afin d'éviter d'influer sur leur bonne exécution.

Enfin, si vous souhaitez dissocier complètement les applications transverses de vos applications métiers, il est envisageable d'installer deux instances d'ArgoCD sur un même cluster Kubernetes, chacun gérant son périmètre qui lui est associé. Ceci permettra alors de s'assurer que même si une instance ArgoCD tombe, seulement une partie des déploiements est affectée. D'autant plus que c'est généralement la gestion des applications métiers qui fait atteindre le seuil critique à ArgoCD.

LIENS UTILES