Ce script initialise automatiquement un environnement de lab avec un cluster Kubernetes, Gitlab et Argo CD.
Ce lab a pour objectif de mettre en avant updatecli et son intégration dans un contexte GitOps : comment "updatecli" s'intègre naturellement dans une pipeline CI/CD, détecte les nouvelles versions d'une application, ouvre automatiquement une Merge Request avec les changements nécessaires, et laisse Argo CD synchroniser l'état du cluster une fois la MR mergée.
Ce script prend en charge :
- La création d'un cluster Kubernetes local avec k3d
- Le déploiement de GitLab et Argo CD via Helm
- La configuration automatique de tous les accès (SSH, Personal Access Tokens, connexion repository Argo CD, etc..)
- La création et configuration d'un repository GitLab comprenant :
- Un fichier
application.yamlpour le déploiement de Grafana via Argo CD - Le values Grafana
- Le manifest updatecli
- Les variables CI/CD
- La GitLab CI
- Une pipeline schedule pour updatecli
- Un fichier
Les outils suivants doivent être installés et disponibles dans le PATH :
- docker — Docker Engine
- k3d — gestion de clusters Kubernetes locaux via Docker
- kubectl — CLI Kubernetes
- helm — gestionnaire de packages Kubernetes
- jq — traitement JSON en ligne de commande
- Une paire de clés SSH
bash ./setup_lab.shLe script demande le chemin de la clé SSH publique à déposer dans GitLab.
| Étape | Description |
|---|---|
| 0/8 | Ajout des entrées DNS dans /etc/hosts |
| 1/8 | Création du cluster Kubernetes demo-devoxx avec k3d |
| 2/8 | Ajout des repo Helm Gitlab et Argo CD |
| 3/8 | Déploiement de GitLab via Helm |
| 4/8 | Déploiement d'Argo CD via Helm |
| 5/8 | Attente du démarrage de Gitlab |
| 6/8 | Configuration de GitLab (OAuth, PAT, clé SSH, projet) |
| 7/8 | Création des variables CI/CD et connexion du repo dans Argo CD |
| 8/8 | Push du projet "demo-devoxx" et création de la pipeline schedule 'updatecli" |
172.18.0.2 gitlab.demo-devoxx.lab
172.18.0.2 argocd.demo-devoxx.lab
172.18.0.2 grafana.demo-devoxx.lab
À la fin de l'exécution, le script affiche les URLS et les credentials :
GitLab : http://gitlab.demo-devoxx.lab (root / <mot de passe généré>)
ArgoCD : http://argocd.demo-devoxx.lab (admin / demo-devoxx)
Le kubeconfig du cluster est écrit dans ~/.kube/k3d.
Pour l'utiliser :
export KUBECONFIG=~/.kube/k3d
kubectl get pods -A