Aller au contenu principal

Qu'est-ce GitOps ?

Bienvenue dans le monde de GitOps, une révolution dans la gestion de l'infrastructure informatique et le déploiement d'applications. Ce concept s'est rapidement imposé comme une méthode incontournable dans le domaine de l'IT, notamment pour sa capacité à simplifier et sécuriser le processus de déploiement.

Un peu d'histoire

Dans les années 2010, pour répondre à un manque de productivité dans le domaine du développement logiciel, est née la démarche DevOps. Cette philosophie vise à instaurer une meilleure collaboration entre les équipes de développement (Devs) et d'opérations (Ops), qui, à l'époque, étaient très cloisonnées. L'objectif est de fluidifier le cycle de vie d’une application et d'accélérer sa mise sur le marché. En fait, DevOps n'a fait que reprendre les méthodes éprouvées de la production industrielle et les transposer dans le domaine de la production logicielle. Le cycle de vie d'une application est passé d'un modèle appelé en V à une boucle perpétuelle contenant des phases de collecte des idées et des exigences, de planification, de codage, d'intégration, de test, de mise en production (release), de déploiement continu, et de surveillance. Pour répondre à ces besoins de nouveaux outils ont été développés pour répondre à ces besoins comme ceux :

  • De Planification dont le plus célèbre est Jira
  • De Build comme Ant, Maven, Grunt, Gradle, ...
  • D'Orchestration de pipelines CI/CD : Jenkins, Gitlab CI/CD, Github Actions, Travis CI, Bambou, ...
  • De test : TestNG, Selenium, xUnit, Soap UI, Newman ...
  • D'analyse Statique de Code : Sonarqube, Codacy, Code Climate
  • De stockage des artefacts : Nexus, Artifactory
  • D'Infrastructure As Code (IAC) permettant d'automatiser le provisionnement : Terraform, Pulumi
  • De Gestion de Configuration des infrastructures : Ansible, Puppet, Chef, Salt, Rudder...
  • De Monitoring et Alerting: Prometheus, Graylog, Loki
  • De Collecte et d'analyse des traces : New Relic, ELK, Datadog, Splunk, ...
  • De Collaboration : Slack, Teams, Mattermost

Le tout reposant sur les logiciels de gestion de versions comme Git.

En parallèle, les conteneurs et ses outils d'orchestration ont enfin trouvé leur place. La liste de ces outils est longue, mais à ce jour le plus répandu est Kubernetes. Kubernetes est un large écosystème en rapide expansion permettant de gérer le déploiement d'applications basé sur le concept de Micro-Services. Même s'il est déjà bien outillé, Kubernetes est un système ouvert qui permet d'intégrer des outils via ce qu'on appelle les Opérateurs.

Dans ce contexte, il ne faut pas oublier que les responsables d'Entreprise cherchent toujours à optimiser le cout de leur IT, à gagner en souplesse, à accéder aux dernières avancées techniques avec un faible investissement initial.

Manager des clusters Kubernetes dans un contexte de production à un coût et ne s'improvise pas. En effet, chaque nouvelle version apporte un lot impressionnant de nouveautés et remet en cause parfois le fonctionnement de l'existant. On préfère donc laisser cette gestion complexe aux fournisseurs de Cloud qui participe entre autre à son développement.

Alors GitOps qu'est-ce que c'est ?

La création de GitOps

GitOps est au départ un outil dont le développement a débuté en 2017 au sein de la société WeaveWorks. L'idée de base était de pouvoir gérer les ressources Kubernetes uniquement en validant les modifications décrites dans des fichiers déclaratifs déposés dans un repository Git et en les exécutant à l'aide de pull request depuis Kubernetes.

Cela s'appuie sur le fait que Kubernetes n'est pas qu'un système d'orchestration. Kubernetes est composé d'un ensemble de processus chargé de contrôler l'état du cluster pour qu'il atteigne celui déclaré dans le code. Un contrôleur déployé au sein du cluster, appelé Opérateur, fait régulièrement des Pull Request à la recherche d'éventuelles modifications. En cas de modifications, il se charge de déclencher les traitements nécessaires pour valider et appliquer ces modifications.

GitOps est donc au départ un outil dont le nom est devenu un principe. Si on regarde bien, cela ne vient pas remplacer les méthodes Devops mais les complète. En effet GitOps se concentre sur l'automatisation du provisionnement des infrastructures.

Les implémentations GitOps

Il existe à ce jour plusieurs implémentations utilisant deux stratégies de déploiement :

La stratégie PULL

Un Operateur Kubernetes se charge de faire des pull Request et de rendre le cluster conforme à la demande.

GitOps PUSH

Les principaux outils sont :

La stratégie PUSH

À chaque fois que les modifications sont poussées un pipeline se charge d'appliquer les modifications. Ils reprennent le concept GitOps mais l'étendent à la gestion de ressources plus classiques, comme des VM.

GitOps PUSH

On retrouve dans cette famille les outils suivants :

Conclusion

En parcourant les divers aspects du principe GitOps, nous avons découvert une méthode révolutionnaire qui transforme la manière dont les infrastructures IT et les applications sont gérées et déployées. GitOps, en s'appuyant sur les principes de l'Infrastructure as Code, de l'automatisation et des demandes de pull/merge requests offre une approche plus transparente, sécurisée et efficace de la gestion informatique.

L'adoption du modèle GitOps a démontré des avantages significatifs dans divers secteurs, notamment avec une réduction des erreurs humaines et une accélération des cycles de déploiement. Ces atouts sont cruciaux dans un environnement technologique en constante évolution.

Le modèle GitOps semble prometteur. Avec l'augmentation continue de la complexité des systèmes informatiques et la nécessité d'une mise sur le marché rapide et fiable des applications, GitOps se positionne comme une réponse adaptée aux défis actuels et futurs. Les entreprises qui adoptent cette approche se dotent d'un avantage concurrentiel significatif, en optimisant leur efficacité opérationnelle et en garantissant une gestion agile et sécurisée de leur IT.

Sources :