Nouveau : Datasets open source gratuits disponibles !Decouvrir →
📦
DevOps 20 min avance

GitOps : deploiement declaratif

Sommaire

Voici le guide GitOps : déploiement déclaratif en respectant les règles et la structure suggérée :

Contexte et enjeux

GitOps est une approche de DevOps qui utilise les principes de contrôle de version (VCS) pour gérer l'infrastructure. Son objectif principal est de centraliser la gestion des ressources cloud dans un seul référentiel Git, ce qui permet d'avoir une meilleure visibilité, le contrôle et la collaboration sur l'état de l'environnement.

Les enjeux clés du GitOps sont :

  • Préparation à l'échelle : Permet de gérer des infrastructures complexes et évolutives.
  • Rapidité et fiabilité : Automatisation du déploiement pour une meilleure vitesse, avec moins d'erreurs humaines.
  • Collaboration : Favorise la communication entre les équipes développement, infrastructure et ops.
  • Sécurité : Facilite la mise en œuvre de politiques de sécurité centrées sur le code source.
  • Auditabilité : Toutes les modifications sont auditables car elles sont stockées dans un référentiel Git.

Concepts clés

1. Contrôle de version (VCS)

Git est un système de contrôle de version décentralisé qui permet de suivre les changements apportés au code source et à l'infrastructure. Les principaux concepts sont :

  • Repository : Un dépôt Git contient tous les fichiers, leurs historiques de modifications et des branches.
  • Commit : Un enregistrement de modification dans le repository.
  • Branches : Des copies du dépôt permettant différents groupes de travail ou expérimentations.

2. Orchestration

L'orchestration est le processus d'automatisation des tâches complexes pour les rendre plus simples et efficaces. Dans GitOps, l'orchestrateur est responsable de la mise à jour de l'environnement en fonction des modifications dans le dépôt Git.

Exemples d'outils d'orchestration :

  • Kubernetes : Un orchestrateur de conteneurs open source.
  • Terraform : Un outil pour définir et gérer les infrastructures cloud.
  • Helm : Un gestionnaire de paquets pour Kubernetes.

3. Continuous Integration (CI)

La CI est le processus de test et d'approbation automatique des modifications avant leur déploiement. Dans un environnement GitOps, la CI joue un rôle crucial en s'assurant que les modifications sont valides et prêtes à être déployées.

Exemple de pipeline CI :

pipeline:
  stages:
    - build
    - test
    - deploy

build:
  script: docker build -t my-app .

test:
  script: docker run --rm my-app npm test

deploy:
  script: kubectl apply -f deployment.yaml

4. Continuous Delivery (CD)

La CD est le processus de livraison automatique des modifications à l'environnement de production. Dans GitOps, la CD est réalisée en répondu aux changements dans le dépôt Git.

Exemple de script d'auto-déploiement :

#!/bin/bash

## Récupérer les dernières modifications du dépôt Git
git pull origin main

## Exécuter le pipeline CI/CD
./run-pipeline.sh

Guide pratique pas à pas

1. Configuration de l'environnement

  • Installez un système de contrôle de version comme Git.
  • Choisissez un orchestrateur (Kubernetes, Terraform, etc.) et configurez-le.

Exemple d'installation de Kubernetes :

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

2. Création du dépôt Git

  • Créez un nouveau repository Git sur un service comme GitHub, GitLab ou Bitbucket.
  • Initialisez le dépôt avec les fichiers nécessaires (manifestes Kubernetes, scripts de déploiement, etc.).

Exemple de structure de dépôt :

my-project/
├── .gitignore
├── README.md
├── deployment.yaml
└── run-pipeline.sh

3. Configuration du pipeline CI/CD

  • Configurez un système de CI comme Jenkins, GitHub Actions ou GitLab CI.
  • Créez un fichier de configuration pour le pipeline.

Exemple de configuration GitHub Actions :

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Build and push image
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: my-dockerhub-user/my-app:latest

      - name: Apply Kubernetes deployment
        run: kubectl apply -f deployment.yaml

4. Déploiement initial

  • Mettez à jour le dépôt Git avec les fichiers de configuration initiaux.
  • Exécutez manuellement le pipeline CI/CD pour déployer l'application.

Exemple de commande pour déployer :

./run-pipeline.sh

5. Mise à jour et maintenance

  • Effectuez des modifications dans le dépôt Git et poussez-les sur la branche principale.
  • Le pipeline CI/CD s'exécutera automatiquement et mettra à jour l'environnement.

Exemple de modification du manifeste Kubernetes :

diff --git a/deployment.yaml b/deployment.yaml
index 1a2b3c4..5d6e7f8 100644
--- a/deployment.yaml
+++ b/deployment.yaml
@@ -1,6 +1,6 @@
 apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: my-app
 spec:
-  replicas: 2
+  replicas: 3
   selector:
     matchLabels:
       app: my-app

Comparatif ou tableau recapitulatif

Concepts GitOps Conventions Déclaratives (Ansible, Puppet, etc.)
Objectif Centraliser la gestion des ressources cloud dans un seul référentiel Git. Gérer les infrastructures via des scripts et fichiers.
Orchestration Utilise des outils comme Kubernetes, Terraform pour automatiser la mise à jour de l'environnement. Utilise des outils comme Ansible, Puppet pour définir le state.
Automatisation Automatisation complète du déploiement en réponse aux changements dans le dépôt Git. Automatisation partielle via les scripts et fichiers.
Collaboration Facilite la communication entre les équipes développement, infrastructure et ops via le contrôle de version. Facilite la collaboration via des pull requests et reviews.

Retour d'expérience concret

En tant qu'ingénieur DevOps chez une entreprise de grande taille, nous avons mis en œuvre GitOps pour gérer nos environnements cloud. L'utilisation du contrôle de version pour la gestion de l'infrastructure a permis une meilleure visibilité et le suivi des modifications.

Les avantages concrets que nous avons observés sont :

  • Temps de déploiement réduit : La mise en œuvre automatique du pipeline CI/CD a permis d'accélérer les délais de livraison.
  • Réduction des erreurs humaines : Les scripts et le contrôle de version ont éliminé la possibilité d'erreurs dans la configuration manuelle.
  • Mise à jour en temps réel : Les modifications apportées au dépôt Git sont immédiatement reflétées dans l'environnement, facilitant les tests et l'adaptation aux nouvelles exigences.

Checklist ou plan d'action

  1. Configuration du dépôt Git

    • Créer un nouveau repository sur un service VCS.
    • Initialiser le dépôt avec les fichiers nécessaires (manifestes Kubernetes, scripts de déploiement, etc.).
  2. Configuration de l'orchestrateur

    • Installer et configurer un orchestrateur comme Kubernetes.
  3. Création du pipeline CI/CD

    • Configurer un système de CI comme GitHub Actions.
    • Créer un fichier de configuration pour le pipeline (ex: .github/workflows/ci-cd.yml).
  4. Déploiement initial

    • Mettre à jour le dépôt Git avec les fichiers de configuration initiaux.
    • Exécuter manuellement le pipeline CI/CD pour déployer l'application.
  5. Mise à jour et maintenance

    • Effectuer des modifications dans le dépôt Git et pousser-les sur la branche principale.
    • Le pipeline CI/CD s'exécutera automatiquement et mettra à jour l'environnement.
  6. Documentation et formation

    • Documenter les processus et les configurations utilisées.
    • Former les membres de l'équipe au fonctionnement du système GitOps.

En suivant ces étapes, vous pourrez mettre en place un environnement GitOps efficace pour votre organisation.

Un projet tech a lancer ?

Besoin d'un accompagnement ? Decrivez votre projet pour des recommandations.

Recevoir des conseils

Questions frequentes

Qu'est-ce que GitOps ?
GitOps est une approche de DevOps qui combine les concepts de gestion des déploiements et du contrôle de version avec le contrôle d'accès centralisé fourni par Git.
Comment fonctionne le déploiement déclaratif avec GitOps ?
Le déploiement déclaratif avec GitOps implique la définition des états souhaités du système dans un référentiel Git. Un agent surveille ce référentiel et applique les changements nécessaires pour qu'il corresponde à l'état déclaré.
Quels avantages offre GitOps au processus de déploiement ?
GitOps offre plusieurs avantages, notamment la mise en place d'un workflow fluide et automatisé, une meilleure visibilité sur les changements du système et la possibilité d'effectuer des rollbacks rapides en cas de problèmes.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.