Formation DevOps | Formation kubernetes​ : 2 - Deploiment de l'application Dockercoins avec k8s

www.itgalaxy.io

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


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io