L’idée en 30 secondes : Cet atelier consiste à industrialiser le cycle de vie d’une application simple en construisant une image applicative Nginx personnalisée avec Packer, puis en déployant automatiquement cette application sur un cluster Kubernetes léger (K3d) à l’aide d’Ansible, le tout dans un environnement reproductible via GitHub Codespaces. L’objectif est de comprendre comment des outils d’Infrastructure as Code permettent de passer d’un artefact applicatif maîtrisé à un déploiement cohérent et automatisé sur une plateforme d’exécution.
Faites un Fork de ce projet. Si besion, voici une vidéo d'accompagnement pour vous aider dans les "Forks" : Forker ce projet
Ensuite depuis l'onglet [CODE] de votre nouveau Repository, ouvrez un Codespace Github.
Vous allez dans cette séquence mettre en place un cluster Kubernetes K3d contenant un master et 2 workers.
Dans le terminal du Codespace copier/coller les codes ci-dessous etape par étape :
Création du cluster K3d
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
k3d cluster create lab \
--servers 1 \
--agents 2
vérification du cluster
kubectl get nodes
Déploiement d'une application (Docker Mario)
kubectl create deployment mario --image=sevenajay/mario
kubectl expose deployment mario --type=NodePort --port=80
kubectl get svc
Forward du port 80
kubectl port-forward svc/mario 8080:80 >/tmp/mario.log 2>&1 &
Réccupération de l'URL de l'application Mario Votre application Mario est déployée sur le cluster K3d. Pour obtenir votre URL cliquez sur l'onglet [PORTS] dans votre Codespace et rendez public votre port 8080 (Visibilité du port). Ouvrez l'URL dans votre navigateur et jouer !
Objectif : Customisez un image Docker avec Packer et déploiement sur K3d via Ansible Difficulté : Moyen/Difficile (~2h)
Votre mission (si vous l'acceptez) : Créez une image applicative customisée à l'aide de Packer (Image de base Nginx embarquant le fichier index.html présent à la racine de ce Repository), puis déployer cette image customisée sur votre cluster K3d via Ansible, le tout toujours dans GitHub Codespace.
Architecture cible : Ci-dessous, l'architecture cible souhaitée.
- Installation du cluster Kubernetes K3d (Séquence 1)
- Installation de Packer et Ansible
- Build de l'image customisée (Nginx + index.html)
- Import de l'image dans K3d
- Déploiement du service dans K3d via Ansible
- Ouverture des ports et vérification du fonctionnement
Complétez et documentez ce fichier README.md pour nous expliquer comment utiliser votre solution.
Faites preuve de pédagogie et soyez clair dans vos expliquations et processus de travail.
Cet atelier, noté sur 20 points, est évalué sur la base du barème suivant :
- Repository exécutable sans erreur majeure (4 points)
- Fonctionnement conforme au scénario annoncé (4 points)
- Degré d'automatisation du projet (utilisation de Makefile ? script ? ...) (4 points)
- Qualité du Readme (lisibilité, erreur, ...) (4 points)
- Processus travail (quantité de commits, cohérence globale, interventions externes, ...) (4 points)
