Pipeline CI/CD avec Argo CD et GitLab

Posted by

Voici comment configurer un pipeline CI/CD avec Argo CD en utilisant GitLab CI/CD.

Prérequis

  1. Cluster Kubernetes: Assurez-vous d’avoir un cluster Kubernetes opérationnel.
  2. Argo CD: Installez Argo CD dans votre cluster Kubernetes.
  3. Dépôt GitLab: Un dépôt GitLab pour stocker vos fichiers de configuration Kubernetes et le code de votre application.

Étape 1 : Installer Argo CD

  1. Installer Argo CD:
   kubectl create namespace argocd
   kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  1. Accéder à l’interface utilisateur d’Argo CD:
   kubectl port-forward svc/argocd-server -n argocd 8080:443
  1. Récupérer le mot de passe initial d’Argo CD:
   kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
  1. Se connecter à l’interface:
  • URL: https://localhost:8080
  • Nom d’utilisateur: admin
  • Mot de passe: (celui récupéré dans l’étape précédente)

Étape 2 : Configurer un dépôt Git

Argo CD utilise un dépôt Git pour suivre les changements dans votre infrastructure et vos applications. Créez un dépôt GitLab pour stocker vos fichiers de configuration Kubernetes.

Étape 3 : Déployer une application avec Argo CD

  1. Définir les manifests Kubernetes: Créez les fichiers de configuration Kubernetes (YAML) pour votre application et poussez-les dans le dépôt GitLab.
  2. Créer une application Argo CD:
   argocd app create <app-name> \
   --repo <repo-url> \
   --path <path-to-k8s-manifests> \
   --dest-server https://kubernetes.default.svc \
   --dest-namespace <namespace>
  1. Synchroniser l’application:
   argocd app sync <app-name>

Étape 4 : Intégrer un pipeline GitLab CI/CD

  1. Créer un fichier de pipeline GitLab (.gitlab-ci.yml):
   stages:
     - deploy

   variables:
     ARGOCD_SERVER: "<argocd-server>"
     ARGOCD_USERNAME: "<username>"
     ARGOCD_PASSWORD: "<password>"

   deploy:
     stage: deploy
     image: bitnami/kubectl:latest
     script:
       - apk add --no-cache curl
       - curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v1.7.8/argocd-linux-amd64
       - chmod +x /usr/local/bin/argocd
       - argocd login $ARGOCD_SERVER --username $ARGOCD_USERNAME --password $ARGOCD_PASSWORD --insecure
       - argocd app sync <app-name>
  1. Configurer les variables de CI/CD dans GitLab:
  • Allez dans votre projet GitLab.
  • Allez dans Settings > CI/CD > Variables.
  • Ajoutez les variables suivantes :
    • ARGOCD_SERVER: Adresse de votre serveur Argo CD.
    • ARGOCD_USERNAME: Nom d’utilisateur Argo CD.
    • ARGOCD_PASSWORD: Mot de passe utilisateur Argo CD.

Étape 5 : Tester le pipeline

  1. Poussez des changements dans votre branche principale (par exemple, main).
  2. Vérifiez que GitLab CI/CD exécute le pipeline et que Argo CD synchronise et déploie les changements dans Kubernetes.

Conclusion

Vous avez maintenant un pipeline CI/CD fonctionnel avec Argo CD et GitLab CI/CD. Ce pipeline va :

  • Déclencher un job CI/CD sur chaque push dans la branche principale.
  • Utiliser GitLab CI/CD pour déployer les modifications dans Kubernetes en synchronisant Argo CD avec les manifests de votre application.

Ce flux de travail peut être adapté selon les besoins spécifiques de votre projet et peut inclure des étapes supplémentaires pour les tests, la validation et d’autres processus de CI/CD.