Retour aux articles
  • 08.11.2023

Qu’est-ce que GitOps ?

Qu’est-ce que GitOps ?

Qu'est-ce que GitOps ?

GitOps est un portmanteau de Git et d’Ops. Le terme a été inventé pour la première fois par Alexis Richardson, le PDG de Weaveworks, en 2017. Il a conceptualisé GitOps comme un moyen de combiner les meilleures pratiques des deux.

Git est un système de contrôle de version distribué qui permet aux développeurs de suivre les modifications de leur code et de collaborer avec d’autres. Git permet aux développeurs de créer des branches, de fusionner des modifications, de résoudre des conflits et de revenir à des versions antérieures de leur code. Git prend également en charge divers flux de travail et outils qui facilitent la révision du code, les tests, l’intégration et le déploiement.

Ops est l’abréviation d’opérations, qui fait référence aux tâches et processus impliqués dans le fonctionnement et la maintenance des systèmes logiciels. Les opérations comprennent des activités telles que l’approvisionnement, la configuration, la surveillance, la mise à l’échelle, la mise à jour, la sécurisation et le dépannage des applications logicielles et de l’infrastructure.

À la base, GitOps est une infrastructure basée sur le code et des procédures opérationnelles qui s’appuient sur Git en tant que système de contrôle de la source. Il s’agit d’une évolution de l’Infrastructure as Code (IaC) et d’une meilleure pratique DevOps qui s’appuie sur Git comme source unique de vérité et mécanisme de contrôle pour la création, la mise à jour et la suppression de l’architecture du système. Plus simplement, il s’agit de la pratique consistant à utiliser les requêtes Git pour vérifier et déployer automatiquement les modifications de l’infrastructure du système.

En plus de Git en tant que mécanisme DevOps clé, GitOps est également utilisé pour décrire les outils qui augmentent la fonctionnalité par défaut de Git. Ces outils ont été principalement utilisés avec des modèles d’exploitation pour l’infrastructure et les applications basées sur Kubernetes.

GitOps garantit que l’infrastructure cloud d’un système est immédiatement reproductible sur la base de l’état d’un dépôt Git. Les pull requests modifient l’état du dépôt Git. Une fois approuvées et fusionnées, les demandes d’extraction reconfigureront et synchroniseront automatiquement l’infrastructure en direct avec l’état du dépôt. Ce flux de travail de synchronisation en direct des demandes d’extraction est l’essence même de GitOps.

Les 4 commandements de GitOps

Voici les quatre pilliers de Gitops :

 

1. Approche déclarative

GitOps étend la pratique consistant à utiliser Git pour le code source d’une application à la configuration, à l’infrastructure et aux procédures opérationnelles de l’application. Il stocke chaque aspect de l’infrastructure d’un projet, y compris les fichiers d’infrastructure en tant que code, les fichiers de configuration et les fichiers de code d’application, dans des référentiels Git, ce qui facilite la gestion du déploiement des logiciels et du provisionnement de l’infrastructure.

En utilisant un format déclaratif, vous pouvez décrire le fonctionnement de votre infrastructure ainsi que les applications qui s’exécutent au-dessus d’elle. Cela permet d’assurer la traçabilité des modifications apportées à n’importe quel environnement et d’obtenir des attributs de retour en arrière, de récupération et d’autoréparation à l’aide de n’importe quel système de contrôle des sources. Abandonner les scripts impératifs adhoc au profit d’une configuration déclarative à tous les niveaux (app et infra).

 

2. Versionné et immuable

Les descriptions déclaratives stockées dans le référentiel prennent en charge l’immuabilité, le versionnage et l’historique des versions. Par exemple, l’utilisation de Git pour les déclarations mentionnées ci-dessus vous permet de disposer d’un endroit unique à partir duquel tout ce qui concerne votre application est dérivé et piloté. Cela vous permet de repérer facilement toutes les modifications apportées à tout moment. N’essayez pas de comprendre ce qui est différent entre deux environnements à la main. Il suffit de regarder toutes les modifications trouvées dans l’historique du contrôle de version, en ayant la garantie que la plateforme correspond toujours à ce qui y est décrit.

 

3. Auto-Pull

L’utilisation de GitOps signifie que vous employez des agents logiciels qui tournent en permanence dans le cluster, qui extraient automatiquement l’état de Git à intervalles réguliers et le vérifient par rapport à l’état du cluster en direct. De cette façon, vous savez toujours si la version dans Git est la même que l’état réel ou non.

 

4. Boucler la boucle

Le fonctionnement en boucle permet de s’assurer que l’état souhaité d’un système correspond à l’état déclaré. C’est l’une des fonctionnalités les plus importantes car elle fournit un retour d’information qui vous permet, à vous et à votre équipe, de mieux contrôler vos opérations et votre flux de travail.

Lorsqu’ils sont utilisés avec votre référentiel, les agents logiciels de GitOps peuvent effectuer diverses fonctions, assurant l’auto-réparation. Les agents automatisent les corrections en cas de panne, exécutent des processus d’assurance qualité pour votre flux de travail et protègent contre les erreurs humaines ou les interventions manuelles.

GitOps vs. DevOps

GitOps et DevOps sont des termes qui se ressemblent, mais qui présentent des similitudes et des différences tout aussi importantes.

 

DevOps est une combinaison des mots développement et opérations. Il s’agit d’une approche collaborative des tâches effectuées par les équipes de développement d’applications et d’exploitation informatique d’une organisation. Les principaux objectifs de DevOps sont de promouvoir la collaboration entre les équipes de développement et d’exploitation et d’adopter des pratiques programmables de développement de logiciels, d’automatisation et de déploiement d’infrastructures.

 

GitOps est un sous-ensemble ou une extension de DevOps qui utilise spécifiquement l’outil Git. L’un des principaux objectifs de GitOps est d’automatiser le processus de développement et d’accélérer les cadences de publication, ce qui est un objectif commun à DevOps. Cependant, GitOps est un paradigme ou une technique, alors que DevOps est plutôt une culture ou une philosophie. GitOps est lié à l’utilisation de Git et de Kubernetes, alors que DevOps n’est pas lié à un seul outil.