Git Ops concepts clés

Comment GitOps améliore l'expérience des développeurs

Introduction

Dans cet article, nous allons vous présenter les étapes essentielles de l'automatisation de vos déploiements avec GitOps, en mettant en avant les avantages pour les développeurs.

GitOps permet aux équipes de bénéficier d'une visibilité accrue de leur infrastructure en optimisant les principales métriques de recherche et d'évaluation DevOps (DORA) et en fournissant un modèle reproductible pour automatiser les tâches.

GitOps c'est quoi ?

GitOps représente une approche moderne et innovante pour l'automatisation des opérations dans le domaine du déploiement des infrastructures et des applications. Cette méthode exploite pleinement le potentiel du système de contrôle de version Git en tant que référence unique et fiable pour la configuration de l'infrastructure et des applications.

Chaque modification apportée est enregistrée dans votre référentiel Git, ce qui garantit une traçabilité claire et précise. Vous pouvez facilement identifier l'auteur de la modification, les modifications apportées et le moment où elles ont été réalisées. En intégrant Git au cœur de votre automatisation, vous simplifiez également la complexité des processus nécessaires pour sécuriser les modifications. L'emploi de GitOps permet d'effectuer automatiquement les modifications d'infrastructure via des commits Git. En général, GitOps est associé à un outil qui déploie les éléments présents dans le référentiel Git, ce qui signifie que toute l'automatisation doit simplement être écrite dans ce référentiel.

En conservant la configuration de votre infrastructure dans Git et en effectuant des modifications via Git, vous facilitez l'intégration des nouveaux arrivants et des membres des autres équipes. Ils peuvent rapidement se familiariser avec l'infrastructure en consultant votre référentiel Git, ce qui permet également aux ingénieurs d'avoir une vision globale du système de manière.

DORA

GitOps vous permet d'améliorer quatre métriques clés qui décrivent la qualité et la performance d'une équipe de développement.

  • La Fréquence de déploiement - Combien de fois une organisation publie avec succès en production
  • Le Temps de latence des changements - le temps nécessaire pour qu'un commit arrive en production
  • Le Taux d'échec des changements - le pourcentage de déploiements entraînant un échec en production
  • Le Temps de rétablissement du service - le temps qu'il faut à une organisation pour se remettre d'un échec en production

L'avantage c'est que si vous administrez votre cluster Kubernetes avec GitOps vous pouvez très facilement le redéployer en cas de panne majeure. Il vous suffira  de pointer votre référentiel vers un nouveau cluster pour déployer toutes vos ressources à l'identique.

A l'inverse, si votre cluster ne s'appuie pas sur GitOps et que vous l'exploitez avec de multiples pipeline de CI/CD vous devrez les appeler une à une et dans le bon ordre!!!

Améliorer l'Expérience des Développeurs

Le Platform Engineering aide à améliorer l'expérience du développeur en éliminant les écarts entre le Dev et l'Ops. Il fourni un flux de travail automatisé qui simplifie la l'utilisation de l'infrastructure les développeurs.

La clé du DevOps est la collaboration entre les développeurs et les OPS. Même lors du développement d'une nouvelle plateforme, il est essentiel de collaborer et de ne pas introduire les mêmes silos qui existaient avant l'adoption DevOps. GitOps contribue à réduire les silos en augmentant la visibilité de l'infrastructure et de l'automatisation qui la crée. Cette visibilité ne fournit pas automatiquement de la collaboration, nécessaire pour une bonne expérience de développement, mais elle l'autorise en construisant un système visible pour les développeurs et les opérateurs.

Les clés du succès

Privilégiez toujours le choix de l'outil le plus adapté et ne vous limiter à un fournisseur spécifique. Vous devez mettre l'accent sur les principes clés qui garantissent le succès de GitOps.

1.Penser avant tout aux développeurs - Soyez pragmatique quant à ce que vous devez accomplir avec l'automatisation.

2.Utiliser Git partout - Il est essentiel que toutes les modifications soient effectuées via Git. Même si elles sont automatisées, si vous ne passez pas par Git, vous n'aurez aucun moyen de vérifier, de contrôler les versions ou de savoir facilement à quoi ressemble votre système.

3.Appliquer la responsabilité partagée - Il est essentiel de définir clairement les responsabilités entre les équipes de développement et celles opérant la plateforme. La réalisation d'une cartographie exhaustive permettra d'apporter de la clarté à tous les membres de l'équipe et favorisera une collaboration accrue.

4.Appliquer les fondamentaux DevOps - Il est crucial d'établir une stratégie claire pour la gestion des branches. En outre, il est essentiel de fournir un soutien et de collaborer avec ceux qui utilisent votre infrastructure.

Tester... toujours tester... encore tester

Une fréquence élevée de déploiement est l'une des quatre principales métriques DORA. Mais faire du GitOps ne suffit pas à maintenir cette fréquence élevée!. Vous devrez privilégier des mécanismes robustes de tests et de validation automatisés. Sans cela, il est impossible d'être certain que les modifications apportées au système fonctionnent. Les tests doivent également être effectués le plus tôt possible, en utilisant des principes tels que le "shift left". Pour rappel le Shift Left consiste à découvrir autant de problèmes que possible le plus tôt possible dans le processus de développement logiciel, de sorte que le coût de leur résolution soit sous contrôle.

Vos tests doivent commencer avant même que le code ne soit validé. Si par exemple vous  utilisez Kustomize, pensez à toujours lancer un hook de pre-commit au moment de build chaque fois que vos scripts d'automatisation sont modifiés. Si une modification devait casser votre build Kustomize le commit ne pourra jamais être validée et le développeur obtient un retour immédiat.

2 tests indispensables

  •  Un test pour valider que les fichiers de sortie correspondent à la sortie attendue.

  •  Un test pour déployer les modifications sur un cluster afin de vérifier qu'elles ont été déployées correctement. permet de s'assurer que cela ne passe pas seulement le linter mais fonctionnent également au déploiement.

Quels outils pour votre déploiement continu ?

GitOps est né de Kubernetes comme un moyen de faire des changements automatisés tout en continuant à les suivre à travers un système de contrôle de version. En termes techniques, ils visent à amener l'état du système vers l'état souhaité, stocké dans le référentiel Git. Ce sont des outils conçus pour déployer des manifestes Kubernetes. Bien que GitOps soit populaire sur Kubernetes, il n'est pas limité à Kubernetes. On peut citer Crossplane qui peut déployer de l'infrastructure vers Azure, AWS et GCP. Il embarque les mêmes techniques pour déployer vos applications cloud natives que pour déployer votre infrastructure cloud native. Il est également possible d'utiliser Terraform pour GitOps, avec le Flux Terraform Controller.

Suppression des ressources

La suppression automatique des ressources est aussi importante que leur création surtout dans un contexte Finops tendu.

Les outils de CD peuvent généralement être configurés pour autoriser soit la suppression automatique, soit la suppression manuelle. Avec la suppression manuelle, l'utilisateur n'a qu'à vérifier ce qui est supprimé et appuyer sur un bouton de synchronisation pour supprimer les ressources. La gestion de la suppression dépend de votre gout pour le risque et de l'effort que vous voulez y consacrer.

Sécurité Vs Fiabilité

Comme toujours GitOps implique des compromis entre la fiabilité et la sécurité. Vous devez considérer:

  • l'utilisation de protections de branche ou déploiements dans GitHub pour empêcher l'emploi non autorisée du pipeline

  • La génération et le stockage des secrets pour que seul le pipeline y ait accès

Vous devez également prendre en compte le contrôle de version, la stratégie de branching et la configuration des outils. 

 

En conclusion

Le développement de votre infrastructure avec GitOps permet aux équipes de créer des systèmes de meilleure qualité et plus faciles à gérer. Cette méthodologie leur permet d'améliorer toutes les métriques DORA. Attention, GitOps demande une connaissance approfondie des principes DevOps et de Git. Son utilisation implique des compromis qui réduisent la vélocité initiale mais augmentent la vélocité à long terme.

Share on: