/IOT

Primary LanguageShellThe UnlicenseUnlicense

Inception of things (IoT)

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.

  1. Mise en place d'une vm avec vagrant et d'un dummy serveur avec k3s
  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é.
  3. Mise en place d'un pipeline argocd avec k3d et intégration continue d'une application avec github.
  4. (Bonus) Mise en place d'une instance personnelle gitlab afin d'opérer comme dans la partie 3, mais sans github.

1) Mise en place de deux vm avec vagrant et de dummy serveur / server worker avec k3s

=> 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)

image

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 ou app2.com, sinon par défaut c'est app3 qui est servie.
  • app2 doit posséder deux replicas

Une image qui illustre cet exercice :

Capture d’écran du 2024-01-23 12-50-35

=> 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

image

Mise en place d'un pipeline argocd avec k3d et intégration continue d'une application avec github.

=> 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 :

Capture d’écran du 2024-01-23 13-13-38

=> 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 :

image

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