Utiliser Kubernetes dans le Cloud AWS : Partie 3 – Application micro-services

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.