Le cluster EKS a été créé dans l’article précédent. Le paramétrage de l’application marron-vert va maintenant être appliqué dans le cluster EKS. Elle est disponible sur github.
Pour pouvoir déployer cette application, positionnez-vous sur le serveur dans lequel vous avez paramétré la connexion cliente avec Kubernetes (cf. partie 2 de cet article, commande « aws eks –region us-west-2 update-kubeconfig –name TEST-EKS »).
- Téléchargement des fichiers de configuration pour déployer l’application dans notre cluster EKS :
# git clone https://github.com/jean-pierre-carret/marron-vert
- Lancer la commande d’installation des « deployments » et « services ».
Ce script shell contient :- la création du namespace : c’est un espace d’isolation interne à Kubernetes. Le nom donné au namespace est également un nom de domaine interne.
- le lancement des deployments : le pod étant une enveloppe de container(s) pour gérer ses ressources, le deployment surcouche la gestion des pods au sein du cluster K8s, par exemple leur répartition au sein des nœuds du cluster. Les images docker sont récupérées via internet sur docker.io.
- le lancement des services : les services font le lien entre les deployments et l’environnement réseau.
Chacune de ces actions correspond à l’exécution de la commande « kubectl » qui permet de communiquer avec K8s.
# ./lance.sh
Dans les fichiers *-deploy.yaml, la ligne replica indique le nombre de pods qui vont être déployés sur la totalité des nodes.
spec: replicas: 5
Si l’on interroge le cluster K8s, l’on peut voir le nombre de pods démarrés, et leur répartition sur les nodes du cluster :
# kubectl get pod -n blog -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE apache1-86bf546fb-87xtr 1/1 Running 0 7m16s 192.168.114.182 ip-192-168-102-144.us-west-2.compute.internal apache1-86bf546fb-lzgvh 1/1 Running 0 7m16s 192.168.163.194 ip-192-168-172-209.us-west-2.compute.internal apache1-86bf546fb-swqmf 1/1 Running 0 7m16s 192.168.148.68 ip-192-168-154-237.us-west-2.compute.internal apache2-68bfddd6bc-5psl5 1/1 Running 0 7m15s 192.168.128.82 ip-192-168-154-237.us-west-2.compute.internal apache2-68bfddd6bc-dc7s4 1/1 Running 0 7m15s 192.168.121.157 ip-192-168-102-144.us-west-2.compute.internal apache2-68bfddd6bc-f24hz 1/1 Running 0 7m15s 192.168.176.192 ip-192-168-172-209.us-west-2.compute.internal nginx-6df5848c66-2rstd 1/1 Running 0 7m14s 192.168.176.61 ip-192-168-172-209.us-west-2.compute.internal nginx-6df5848c66-9mcz2 1/1 Running 0 7m14s 192.168.164.137 ip-192-168-172-209.us-west-2.compute.internal nginx-6df5848c66-fnxh5 1/1 Running 0 7m14s 192.168.136.50 ip-192-168-154-237.us-west-2.compute.internal nginx-6df5848c66-wz22b 1/1 Running 0 7m14s 192.168.96.186 ip-192-168-102-144.us-west-2.compute.internal nginx-6df5848c66-xmg4s 1/1 Running 0 7m14s 192.168.96.235 ip-192-168-102-144.us-west-2.compute.internal
Le point clé du déploiement de cette application se situe dans le fichier nginx-svc.yaml, sur le paramètre « type:LoadBalancer ».
En effet, l’intégration de Kubernetes dans AWS permet implicitement de créer un load balancer dans AWS par cette simple ligne.
spec: selector: app: marron-vert type: LoadBalancer ports: - name: port1 protocol: TCP port: 80 targetPort: 80
Voici un extrait du paramétrage du load balancer créé avec cette commande :
C’est le « Dns name » que nous allons utiliser pour nous connecter à notre application.
Attendez quelques minutes le temps que le load balancer se synchronise avec les nodes. Puis copiez l’URL du « Dns name » dans un navigateur.
Pour ma part :
http://a7239c6459c3a11e9a0a9022feb15940-2139625934.us-west-2.elb.amazonaws.com
Vous obtenez l’accès à l’application, fabuleux !
Pour accéder aux micro services : /vert ou /marron
Et si vous souhaitez vous former sur Amazon Web Services, découvrez notre offre de formations AWS.