Formation DevOps | Formation kubernetes : 2 - Deploiment de l'application Dockercoins avec k8s
Deploiment de l’application Dockercoins avec Docker-compose
Dans un premier temps, on fait le deploiement avec docker-compose pour comprendre l’architecture de cette application :
git clone application dockercoins
git clone git@gitlab.com:Itgalaxy1/k8s-formations/dockercoins.git
Exécuter DockerCoins sur Kubernetes
• Créer un déploiement pour chaque composant (hasher, redis, rng, webui, travailleur)
• Exposer les déploiements qui doivent accepter les connexions (hachage, redis, rng, webui)
• Pour Redis, nous pouvons utiliser l’image Redis officielle
• Pour les 4 autres, nous devons créer des images et les pousser vers un registry
Building et shipping les images
Il existe de nombreuses options !
Manuellement:
• Construire localement (avec docker build ou autre).
• Pousser vers le registry.
Automatiquement :
• Construire et tester localement .
• Lorsque vous êtes prêt, validez et poussez un référentiel de code comme gitlab ou github.
• Le référentiel de code informe un système de construction automatisé.
• Ce système récupère le code, le construit, pousse l’image vers la registry.
Quel registry voulons-nous utiliser ?
• Il existe des produits SAAS comme Docker Hub, Quay…
• Chaque grand fournisseur de cloud dispose également d’une option (ACR sur Azure, ECR sur AWS, GCR sur Google Cloud…)
• Il existe également des produits commerciaux pour gérer notre propre registry (Docker EE, Quai…)
• Et des options open source aussi !
• Lorsque vous choisissez un registre, faites attention à son système de construction (quand il en a un)
Utiliser des images du ECR ( Elastic Container Registry)
Pour le confort de tous, nous nous sommes occupés de créer des images DockerCoins
Nous avons poussé ces images vers ECR une registry public de AWS, sous l’utilisateur ItGalaxy.io
Ces images sont taggé avec un numéro de version, v0.1
Les noms complets des images sont donc :
• public.ecr.aws/d7r7x0j3/hasher:v0.1
• public.ecr.aws/d7r7x0j3/rng:v0.1
• public.ecr.aws/d7r7x0j3/webui:v0.1
• public.ecr.aws/d7r7x0j3/worker:v0.1
Exécuter notre application sur Kubernetes
Nous pouvons désormais déployer notre code (ainsi qu’une instance redis):
Déployer redis:
kubectl create deployment redis --image=redis
Déployer tous les composants:
kubectl create deployment hasher --image=public.ecr.aws/d7r7x0j3/hasher:v0.1
kubectl create deployment rng --image=public.ecr.aws/d7r7x0j3/rng:v0.1
kubectl create deployment webui --image=public.ecr.aws/d7r7x0j3/webui:v0.1
kubectl create deployment worker --image=public.ecr.aws/d7r7x0j3/worker:v0.1
Est-ce que ça marche?
Après avoir attendu la fin du déploiement, regardons les logs !
(Indice : utilisez kubectl get deploy -w pour surveiller les événements de déploiement)
Regardez quelques journaux :
kubectl logs deploy/rng
kubectl logs deploy/worker
🤔 rng c’est bien… Mais pas travailleur.
💡 Ah c’est vrai ! Nous avons oublié d’exposer.
Connecter les conteneurs entre eux
Trois déploiements doivent être accessibles par d’autres : hasher, redis, rng
• le worker n’a pas besoin d’être exposé
• webui sera traité plus tard
Exposez chaque déploiement, en spécifiant le bon port :
kubectl expose deployment redis --port 6379
kubectl expose deployment rng --port 80
kubectl expose deployment hasher --port 80
Est-ce que ça marche encore ?
Le worker a une boucle infinie, qui réessaye 10 secondes après une erreur :
Stream les logs du worker:
kubectl logs deploy/worker --follow
Nous devrions maintenant voir le work heureux.
Exposer les services pour un accès externe
• Nous aimerions maintenant accéder à l’interface utilisateur Web
• Nous allons l’exposer avec un NodePort
• Créez un service NodePort pour l’interface utilisateur Web :
kubectl expose deploy/webui --type=NodePort --port=80
• Vérifiez le port qui a été alloué :
kubectl get svc
Accéder à l’interface utilisateur Web
Nous pouvons maintenant nous connecter à n’importe quel nœud, sur le port de nœud alloué, pour afficher l’interface utilisateur Web
Déployer avec des fichiers YAML (recommandé)
git clone git@gitlab.com:Itgalaxy1/k8s-formations/dockercoins.git
cd ~/dockercoins/k8s
kubectl apply -f dockercoins.yaml
1. Nous contactez
- Description: Besoin de Formation et des Solutions cloud complètes pour vos applications
- Links:
2. Infra as a Service
- Description: Infrastructure cloud évolutive et sécurisée
- Links:
3. Projets Développeurs
- Description: Découvrez des opportunités passionnantes pour les développeurs
- Links:
4. Développeurs
- Description: Rejoignez notre communauté de développeurs
- Links:
5. Formations Complètes
- Description: Accédez à des formations professionnelles de haute qualité
- Links:
6. Marketplace
- Description: Découvrez notre place de marché de services
- Links:
7. Blogs
- Description: Découvrez nos blogs
- Links:
- comment creer une application mobile ?
- Comment monitorer un site web ?
- Command Checkout in git ?
- Comment git checkout to commit ?
- supprimer une branche git
- dockercoin
- kubernetes c est quoi
- architecture kubernetes
- Installer Gitlab Runner ?
- .gitlab-ci.yml exemples
- CI/CD
- svelte 5 vs solid
- svelte vs lit
- solidjs vs qwik
- alpine vs vue
- Plateform Freelance 2025
- Creation d’un site Web gratuitement
This website is powered by ItGalaxy.io