IoT est un projet qui permet de découvrir vagrant, argocd et kubernetes via 3 exercices et un exercice bonus orienté CI/CD avec une instance gitlab.
- Mise en place d'une vm avec vagrant et d'un dummy serveur avec k3s
- Mise en place de 3 applications, avec une vm déployée avec vagrant, et un ingress qui dispatche les requêtes selon l'host http spécifié.
- Mise en place d'un pipeline argocd avec k3d et intégration continue d'une application avec github.
- (Bonus) Mise en place d'une instance personnelle gitlab afin d'opérer comme dans la partie 3, mais sans github.
=> Contraintes :
- 2 vm lancées avec vagrant
- Les noms des vm doivent contenir notre identifiant 42 et S pour la vm server, SW pour la vm qui contient le server worker
- Deux ip dédiées pour chacune des vm sur l'interface réseau eth1
- Se connecter via ssh sans mot de passe
- Un Controlleur sur le server via k3s
- Un agent sur le server worker via k3s
=> Usage :
cd p1
vagrant up
vagrant ssh oelayadS
|vagrant ssh oelayadSW
sudo kubectl get nodes -o wide
ip a show eth1
(la même commande peut être effectuée sur la vm qui contient le server worker)
2) Mise en place de 3 applications, avec une vm déployée avec vagrant, et un ingress qui dispatche les requêtes selon l'host http spécifié.
=> Contraintes :
- Utiliser vagrant pour mettre en place une vm
- Une adresse ip dédié pour la vm
- Mettre en place un cluster via k3s qui va servir via un ingress controller une des trois applications suivant l'en-tête
Host
de la requête http - L'host peut-être
app1.com
ouapp2.com
, sinon par défaut c'estapp3
qui est servie. app2
doit posséder deux replicas
Une image qui illustre cet exercice :
=> Usage
cd p2
vagrant up
vagrant ssh
sudo kubectl get all
curl -H "Host: app1.com" 192.168.56.110 | grep app
|curl -H "Host: app2.com" 192.168.56.110 | grep app
|curl 192.168.56.110 | grep app
=> Contraintes :
- Plus de vagrant, à la place de vm on utilisera des conteneurs docker
- Utiliser argocd
- Utiliser k3D
- Faire une intégration continue avec deux namespaces : argocd et dev
- argocd sera dédié à ArgoCD
- dev à une application qui sera synchronisée avec github.
Voici une image qui illustre l'exercice :
=> Usage :
/!\ Attention, si vous faites cela sur votre ordinateur, vous risquez de vous retrouver avec des applications que vous ne voulez probablement pas ! Faites le sur une vm avec docker d'installé.
cd p3/scripts
bash install.sh
Note : vu que l'application est syncrhonisée via github, vous ne pourrez pas faire la même démarche chez vous.
Exemple de l'application synchronisée dans argocd :
4) (Bonus) Mise en place d'une instance personnelle gitlab afin d'opérer comme dans la partie 3, mais sans github.
=> Contraintes :
- Mettre en place une sinatcen personnelle de gitlab
- créer un namespace gitlab
- Tout ce qui a été fait dans la partie 3 doit fonctionner de même avec cette instance gitlab.
/!\ Attention, si vous faites cela sur votre ordinateur, vous risquez de vous retrouver avec des applications que vous ne voulez probablement pas ! Faites le sur une vm avec docker d'installé.
=> Usage :
cd bonus && bash install.sh && bash add_repo.sh