Documentations

GitOps : Comment cette méthodologie vous permet de garder la maîtrise de votre infrastructure ?

Etienne
6/4/2023

Pour chaque livraison d’infrastructure, nous mettons en place une méthodologie et des outils GitOps pour nos clients. Aujourd’hui, nous vous expliquons comment une architecture GitOps permet d’apporter un cadre et des processus clairs dans la gestion d’une infrastructure Cloud. Il favorise le travail en équipe, garantit la bonne santé de l’infrastructure et facilite une évolution saine de l’infrastructure..

Mise en contexte

Depuis plusieurs années, les entreprises ont tendance à administrer leurs infrastructures manuellement et sans méthodologie collaborative.
Ce fonctionnement développe avec le temps de nombreuses lacunes et dérives dans l’orchestration et la maintenance de ces infrastructures : Machines laissées à l’abandon, documentation incomplète ou obsolète, mauvaises configurations, etc.

La démocratisation de Kubernetes est venue faciliter les principes de gestion des infrastructures, notamment à travers le GitOps et de nombreux Workflows. Aujourd’hui, Kubernetes, Terraform, ArgoCD apportent une chaîne de distribution CD complète (acronyme de Continuous Delivery) aux infrastructures orientées Cloud

Cette nouvelle méthodologie vient apporter un cadre et des processus assez stricts qui facilitent la maintenance, l’évolution et les suppressions de ressources selon les besoins tout en préservant les avantages de la technologie Git (historique des modifications).

Skyloud est aujourd’hui en mesure d’apporter de nombreux outils, un cadre et des processus bien définis, permettant à nos clients d’éviter les erreurs de manipulation et d’être plus sereins dans les futures évolutions de leurs infrastructures.

Dans cet article, nous vous présentons les méthodes que nous appliquons et mettons à disposition pour nos clients afin de gérer leurs infrastructures Cloud. 

GitOps : qu’est-ce que c’est ?

Avant de parler GitOps, nous devons décomposer ce mot et comprendre à quoi sert Git. Git est un système de gestion de versions qui permet de suivre les modifications apportées à un projet informatique au fil du temps. Il a pour objectif d’aider les équipes dans la gestion des fichiers, d’apporter de l’antériorité à toute la réalisation produite par écrit (repository) et faciliter la collaboration à plusieurs sur un même document. Dans le cadre d’un projet GitOps, un contrôle strict des productions des collaborateurs dans la réalisation du code est un indispensable. 

Même si Git est très largement utilisé sur des projets applicatifs, il aide également les ingénieurs DevOps à contribuer à un univers Cloud avec du code.

On parle aujourd’hui de “GitOps” lorsqu’il s’agit d’apporter aux ingénieurs Ops, au travers d’outils Git, des workflows pour les évolutions d’infrastructures.
Le GitOps est aujourd’hui un modèle de workflow incroyablement puissant pour la gestion d’une infrastructure Cloud moderne. 

Il permet d’organiser les opérations liées à la modification d’un environnement sur la base d’un ou de plusieurs repository Git. Ainsi, il organise et comprend toutes les ressources de votre production, vous permettant de les automatiser. 

Doit-on être sur Kubernetes ?

Nos méthodologies GitOps s’articulent principalement autour de Kubernetes, mais le GitOps s’applique très bien dans des environnements plus legacy avec Ansible par exemple.
La mise en application des techniques GitOps n’en reste pas moins plus complexe dans des environnements legacy, tels que des Cloud Privés.

Kubernetes s’accouple bien mieux avec cette méthodologie grâce à ses outils et la communauté qui l’entoure. Les workflows sont automatisés de bout en bout avec une approche et une granularité très fine au niveau des droits, des équipes et des possibilités associées aux déploiements sous Kubernetes. 

Kubernetes s’appliquant aussi bien en on-premise que dans le Cloud, beaucoup d’outils sont centrés sur son évolution et sa compatibilité. 

Nos outils GitOps

Il y a plusieurs approches dans les outils GitOps, principalement l’approche PUSH et l’approche PULL. Voici quelques explications sur nos méthodologies et nos technologies pour chacune de ses approches : 

  1. Déploiement des composants Cloud (Approche PUSH)

L’approche PUSH correspond à la manière dont on déploie ses composants Cloud pour arriver à obtenir une infrastructure agnostique avec Kubernetes.

Terraform : Notre outil d’infrastructure-as-code.

Terraform est un outil open-source permettant de développer des infrastructures avec du code. Automatisant ainsi la construction des ressources d’une infrastructure de centre de données comme un réseau, des machines virtuelles ou une base de données. 

Lorsque nous menons à bien un projet, nous mettons en place un répertoire Git Terraform qui permet de recenser toutes les ressources Cloud requises de l’infrastructure. Au travers d’une CI/CD propre à Terraform, ces ressources et déclarations d’infrastructure-as-code sont appliquées de manière automatisée et sécurisée dans le ou les cloud(s) ciblé(s). 

Terraform ayant l’avantage d’être agnostique, nous pouvons travailler avec plusieurs clouds simultanément sur le même répertoire Git. Terraform permet de coordonner les composants cloud déployés entre eux et de profiter des services opposés avec le moindre effort. 

Terraform nous permet de créer des modules sur-mesure, portables et réutilisables sur lesquels nous concentrons nos efforts de R&D pour respecter aux mieux les bonnes pratiques en matière de déploiement sur le Cloud : Sécurité, Haute disponibilité, Flexibilité, Sauvegardes… 

Le répertoire Git que nous fournissons à notre client contient ainsi toutes les ressources associées à son environnement Cloud. Incluant une CI/CD complète idéale pour ses futures évolutions

  1. Déploiement des composants Kubernetes (Approche PULL)

L’approche PULL correspond à la manière dont on garantit la bonne santé et le maintien en condition opérationnelle du cluster une fois établi. Ceci consiste à organiser par fichiers les déploiements applicatifs d’un cluster avec du code,  facilitant ainsi l’exploitation des différents environnements qui sont déployés. 

On met donc à jour le Git pour mettre à jour l’infrastructure. 

Argo, notre outil de CD.

ArgoCD est un outil open source qui se déploie sur un cluster Kubernetes. Il interagit comme un agent sur l’ensemble des créations d’objets et garantit le déploiement d’une application et son cycle de vie. 

Kubernetes ayant son propre registre de ressources, ceci lui permet de rester agnostique au Cloud qui l’héberge. L’ensemble de ces ressources se présente sous la forme de fichiers Helm, fichiers structurels dans lesquels on retrouvera toutes les ressources nécessaires au cluster pour déployer et orchestrer ses applications.

ArgoCD intervient sur les projets Git, récupère les ressources déclarées et vient les appliquer dans le cluster. Il garantit la synchronisation entre les éléments définis dans le répertoire Git en fonction des contributions réalisées et ce qui est réellement appliqué sur le cluster. 

Le rôle d’ArgoCD est de créer un point d’échange centralisé entre les collaborations, les contributions faites sur un répertoire Git avec l’état de l’art du cluster. ArgoCD apporte aussi un certain nombre de fonctionnalités d’administration. Nous pouvons, par exemple, utiliser une interface utilisateur pour prévisualiser l’ensemble des ressources et interagir avec elles (modifications, ajouts, suppressions, mises à jour…).

Ci-dessous, un schéma basique du mécanisme de synchronisation entre l’infrastructure et un répertoire Git. 

Le répertoire Git que nous fournissons à notre client synchronise toutes les déclarations permettant de déployer ses services. Il prend en charge la gestion des multi-clusters et des multi environnements. 

Les avantages et inconvénients de notre méthodologie GitOps

  1. Les avantages

Les avantages de nos processus sont nombreux ; 

  • Contribuer à la mise en œuvre d’un PRA et réduire drastiquement les temps de restauration (en cas de besoin). 
  • Répliquer facilement les environnements.
  • Apporter un cadre dans la collaboration de plusieurs personnes au sein d’un même projet. 
  • Garder un historique des contributions. 
  • Contrôler les évolutions apportées à l’infrastructure plus facilement. 
  • Refléter, au plus juste, l’infrastructure cible et avoir une documentation.

  1. Les inconvénients

Il n’en reste pas moins quelques inconvénients à cette méthodologie ; 

  • Nos technologies requièrent beaucoup de rigueur et des compétences encore rares sur le marché. 
  • Les montées de versions peuvent être pénibles à opérer.
  • Une intervention manuelle directe sur le fournisseur Cloud, soit sans passer par le code Terraform, peut altérer l’état de santé du code et la sécurité du compte. La compétence sur Terraform est donc un prérequis pour aborder cette méthodologie.

Conclusion

Notre méthodologie et nos technologies GitOps sont de véritables accélérateurs sur tous les sujets de maintenance et évolution des infrastructures. Skyloud œuvre aujourd’hui pour apporter des outils, un cadre et des processus clairs pour toutes vos futures évolutions d’infrastructure. Évitant ainsi toutes les possibles erreurs de manipulation dans les environnements. 

Cependant, la rigueur et le cadre d’application doit être bien défini au préalable si on veut poursuivre sur le long terme avec cette méthodologie. 

Vous souhaitez adopter des méthodes GitOps dans vos environnements ? 

Parlez-nous de vos projets

Parlez-nous de vos projets
Travailler avec SKYLOUD, c’est collaborer avec une équipe passionnée par l'univers Cloud et les projets à fort enjeux techniques. Nous avons l'obsession de vous apporter la meilleure satisfaction possible via le respect de nos valeurs fondatrices.
Contactez-nous