Dakar Institute of Technology (DIT) 2021 ⎯ 2022
_______________________________________________________________________________________________________________
Développement d’une Application Cloud Native
Objectif : Comprendre l’architecture basée sur les microservices. Dockerisation, déploiement et
orchestration d’une application basée sur des microservices
A. Architecture de l’application Voting App
Voting App est une application opensource maintenue par Docker. Elle est utilisée pour les démos et les
présentations. L’intérêt de cette application est qu’elle utilise l’approche microservices avec 5 services :
− voting-app : un serveur web en python qui expose l’interface de vote.
− redis : une base de données rapide mais non persistante qui va récupérer les résultats de vote.
− worker : écrit .NET et qui récupère les votes depuis redis, les consolide et les met dans une base de
données persistante.
− db : une base de données postgresql qui va stocker de manières définitive et durable les résultats de
vote.
− result-app : un serveur web en [Link] qui expose le résultat de vote.
1. Cloner le code source de l’application dans votre répertoire local avec la commande :
cd ~
git clone [Link]
B. Dockerisation de l’application Voting App
Trois des microservices de l’application possèdent du code et des configurations à intégrer dans les
images Docker à créer. Les images des bases de données sont déjà disponibles sur Dockerhub, donc pas
besoin de les créer de nouveau.
NB : dans les commandes qui vont suivre, remplacer DockerID par votre prope DockerID.
2. Se déplacer dans le répertoire voting-app, vérifier avec la commande ls si fichier Dockerfile est
bien présent. Ensuite créer l’image DockerID/vote-app:1.0 avec la commande :
cd ~/voting-app/vote-app
docker build -t DockerID/vote-app:1.0 .
3. Se déplacer dans le répertoire worker, vérifier avec la commande ls si fichier Dockerfile est bien
présent. Ensuite créer l’image DockerID/worker:1.0 avec la commande :
cd ~/voting-app/worker
docker build -t DockerID/worker:1.0 .
_____________________________________________________________________________
Dr Ousmane SADIO | [Link]@[Link]
Dakar Institute of Technology (DIT) 2021 ⎯ 2022
_______________________________________________________________________________________________________________
4. Se déplacer dans le répertoire result-app, vérifier avec la commande ls si fichier Dockerfile est
bien présent. Ensuite créer l’image DockerID/result-app:1.0 avec la commande :
cd ~/voting-app/result-app
docker build -t DockerID/result-app:1.0 .
5. Afficher les images qui viennent d’être crées :
docker images
6. Une fois les images créer, vous devez les pousser vers Dockerhub.
docker push DockerID/vote-app:1.0
docker push DockerID/worker:1.0
docker push DockerID/result-app:1.0
NB : si vous n’êtes pas authentifié à Docker, utiliser au préalable la commande docker login avant de
pousser les images vers Dockerhub.
7. Connectez-vous sur la plateforme Dockerhub et vérifiez si les images poussées y sont bien
présentes.
C. Déploiement de l’application Voting App
Le déploiement de l’application se fera par le biais de spécifications dans des fichier yaml à exécuter
avec la commande kubectl.
8. Tous les fichers yaml se trouvent dans le répertoire k8s-specifications. Accéder à ce répertoire puis
afficher son contenu.
cd ~/voting-app/k8s-specifications
ls
NB :
− Tout le déploiement se fera dans le namespace vote.
− Tous les microservices devant exposer leurs services (adresse IP, ports réseau, nom de service) ont,
en plus de leurs spécifications de Pod ou Deployment, des spécifications yaml de Service.
− Les microservices de base de données redis et db devront utiliser des volumes de stockage
nécessitant la création de PersistentVolume et PersistentVolumeClaim.
9. Indiquer dans les spécifications yaml des Pods ou Deployments des microservices dockérisés le
nom des images que vous avez poussé dans Dockerhub.
10. Créer les répertoires de volume pour les PersistentVolume de redis et db
sudo mkdir -p /mnt/data-voting-app/redis
sudo mkdir -p /mnt/data-voting-app/db
11. Créer le namespace vote à partir de la spécification du fichier [Link]
kubectl apply -f [Link]
12. Déployer les PersistentVolume et PersistentVolumeClaim des microservices concernés
kubectl apply -f [Link]
kubectl apply -f [Link]
kubectl apply -f [Link]
kubectl apply -f [Link]
_____________________________________________________________________________
Dr Ousmane SADIO | [Link]@[Link]
Dakar Institute of Technology (DIT) 2021 ⎯ 2022
_______________________________________________________________________________________________________________
13. Vérifier si les volumes crées sont opérationnels
kubectl get pv -n=vote
kubectl get pvc -n=vote
14. Déployer le vote-app et son service associé
kubectl apply -f [Link]
kubectl apply -f [Link]
15. Vérifier si les pods et les services de vote-app ont bien démarrés
kubectl get pods -n=vote
kubectl get services -n=vote
16. Refaire l’étapes 14. pour les autres microservices.
17. En se basant sur les informations des services, avec quels moyens pourra-t-on accéder aux
interfaces de vote et de résultat. Ensuite accéder ces interfaces via votre navigateur.
• vote-app : service NodePort 31000 d’où URL = [Link]:31000
• result-app : service NodePort 31000 d’où URL = [Link]:31001
_____________________________________________________________________________
Dr Ousmane SADIO | [Link]@[Link]