Loading search data...

GitOps, mais qu'est ce que c'est ?

Publié le : 28 novembre 2021 | Mis à jour le : 25 septembre 2022

Alors que certains n’ont pas encore digéré les méthodes Devops qu’on nous parle de GitOps. Qu’est-ce que c’est encore ce bin’s ?

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é la démarche DevOps. Cette philosophie vise à instaurer une meilleure collaboration entre les équipes Devs et Ops, qui à l’époque étaient très cloisonnés. L’objectif est de fluidifier le cycle de vie d’une application et d’en 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 à celui de la production logicielle. Le cycle de vie d’une application est passé de celui appelé en V à une boucle perpétuelle contenant des phases de collecte des idées et des exigences, de planification, de code, d'intégration, de test, de release, déploiement continu, 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, 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
  • De Gestion de Configuration des infrastructures : Ansible, Puppet, Chef, Salt, Packer, Vagrant, …
  • 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 etait 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é. 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’étende à la gestion de ressources plus classiques, comme des VM.

GitOps PUSH

On retrouve dans cette famille les outils suivant :

Conclusion

Donc GitOps ne se limite pas à la gestion de ressources Kubernetes, mais requiert d’avoir des infrastructures pouvant être gérés par les outils d’Infra As Code ou utilisant des clusters Kubernetes (auto-hébergé ou dans le cloud). Il ne vient pas supplanter Devops mais vient le compléter.

On se rend compte que les jours des Ops ‘classiques’ sont comptés et il est encore temps de se reconvertir !

Je ne me déclare pas spécialiste du sujet, c’est pour cela que je me suis attelé à la rédaction de ce billet. Si vous n’êtes pas d’accord, parlons en dans les commentaires.

Sources :


Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur   Ko-Fi  . Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne nous coûte plus cher, via   ce lien  . Vous pouvez aussi partager le lien sur twitter ou linkedin via les boutons ci-dessous. Je vous remercie de votre soutien


Mots clés :

gitops tutorials

Autres Articles


Commentaires: