Xylos brands

Comment orchestrer des conteneurs comme un pro ?

Souhaitez-vous proposer des conteneurs à vos utilisateurs finaux en toute fiabilité ? Utilisez dans ce cas un orchestrateur de conteneurs. Aujourd’hui, Kubernetes, un orchestrateur de conteneurs open source de Google, est le choix qui s’impose d’emblée. Comme presque tous les clouds publics le fournissent, vous pouvez donc le considérer comme la norme. Microsoft propose Kubernetes en tant que service via Azure Kubernetes Service (AKS).

1.Comment fonctionne l’orchestration de conteneurs ?

La notion d’« orchestration de conteneurs » vous semble à tout le moins compliquée ? Pas de souci, le concept sous-jacent est toutefois très simple. Il s’agit d’un logiciel qui vous permet de démarrer les conteneurs selon vos spécifications personnelles. Pour notre application web, par exemple, voici notre cheminement :

  • démarrez toujours les conteneurs au moins deux fois. Vous gagnerez ainsi en disponibilité et en vitesse ;
  • répartissez les conteneurs sur plusieurs serveurs. Cela vous protège contre la défaillance d’un serveur ;
  • mettez les conteneurs à la disposition des utilisateurs via un service. Un service vous donne accès à l’application web ;
  • rendez le service disponible via une adresse IP publique. Vos utilisateurs peuvent accéder à l’application web à partir de cette adresse ;
  • assurez-vous que vous pouvez mettre à niveau l’application sans interruption ;
  • veillez à ce que nous puissions revenir à la version précédente en cas de mise à niveau.

Lorsque vous utilisez Kubernetes comme orchestrateur de conteneurs, définissez les exigences ci-dessus comme un état souhaité (desired state). Kubernetes surveillera l’état actuel de ce que vous avez défini. Si l’état actuel diffère de l’état souhaité, Kubernetes le corrigera.

2. Prise en main d’Azure Kubernetes Service

Si vous voulez déployer Kubernetes dans votre propre centre de données, vous avez besoin de beaucoup de connaissances. Bien qu’il existe de nombreux outils qui simplifient le déploiement, vous êtes responsable de la maintenance, de la sauvegarde, de la reprise après sinistre et du dépannage.

Avec Azure Kubernetes Service (AKS), Microsoft propose Kubernetes en tant que service. Cette approche présente les avantages suivants :

  • installation facile via le portail Azure ou des scripts ;
  • aucune gestion des nœuds maîtres (master nodes). Les nœuds maîtres sont le cœur de Kubernetes. Microsoft gère ces serveurs pour vous. Vous n’avez pas à les payer non plus ;
  • mise à niveau contrôlée vers de nouvelles versions de Kubernetes ;
  • évolutivité simple des nœuds d’agent (agent nodes). Les nœuds d’agent sont des serveurs qui font tourner vos conteneurs. Un curseur vous permet d’en définir le nombre. Vous en voulez 100 ? Qu’à cela ne tienne ! C’est possible ; 
  • intégration avec le réseau virtuel Azure et les équilibreurs de charge Azure Load Balancer ;
  • intégration avec Azure Active Directory ;
  • intégration avec Azure Monitor à la fois pour les journaux et les données de mesure (comme disque, CPU et réseau).

Après avoir déployé Kubernetes, vous pouvez effectuer un certain nombre des tâches figurant ci-dessus via le portail Azure ou des scripts. Découvrez ci-dessous comment adapter le nombre de nœuds.

3. Comment peut-on déployer des conteneurs ?

Restons pratiques et déployons notre application web dans AKS. Dans cet exemple, nous utilisons un certain nombre de commandes dans l’interpréteur de commandes Azure Cloud Shell. Nous déployons des conteneurs avec des fichiers de configuration et un outil comme Azure DevOps. Nous examinerons cette technique dans un prochain billet de blog.

Nous démarrons nos conteneurs avec la commande suivante:

kubectl run nasnet --image=xylos/nasnet --port=9090 --replicas=2

La commande ci-dessus utilise kubectl, un programme que vous appliquez à la ligne de commande. Il fournit deux conteneurs qui tournent sur l’application web. L’application est disponible via le port TCP 9090 et le conteneur utilise l’image xylos/nasnet que nous avons créée dans le blog précédent.

Avec la commande ci-dessous, vous pouvez voir vos conteneurs :

kubectl get pods

Kubernetes utilise des pods ­ le pod étant l’unité de base de l’ordonnancement dans Kubernetes. Un pod peut contenir un ou plusieurs conteneurs. Dans notre exemple, chaque conteneur fonctionne dans un pod séparé, ce qui doit être le cas en l’occurrence. Le résultat de la commande est affiché dans l’illustration ci-dessous.

La commande kubectl run a encore créé d’autres objets que les pods. L’un de ces objets est un déploiement. Un déploiement nous permet d’adapter l’application de manière contrôlée, par exemple pour installer une nouvelle version.

Comme les pods ne sont actuellement pas encore disponibles via une adresse IP externe, nous utilisons le déploiement pour créer un service. Nous pouvons alors relier un équilibreur de charge Azure à ce service. À cet effet, nous utilisons la commande suivante :

kubectl expose --port=80 --target-port=9090 --type=LoadBalancer deploy/nasnet

La commande ci-dessus crée un service qui rend les conteneurs du déploiement nasnet disponibles en interne. Peu importe qu’il s’agisse d’un ou de cent conteneurs. Le service est disponible sur une adresse IP publique via un Load Balancer Azure (type = LoadBalancer). On peut voir cette adresse IP avec la commande suivante :

kubectl get service nasnet

Il en résulte ce qui suit :

Nous pouvons vérifier que nos actions fonctionnent en surfant sur http://52.166.68.169:

Si votre application est très réussie, il est très facile d’augmenter le nombre de conteneurs. L’image ci-dessous montre la commande pour passer à 4 conteneurs et le résultat :

En tant qu’administrateur, vous ne devez pas changer vous-même le service ou l’équilibreur de charge. Kubernetes s’en charge en arrière-plan. Cet exemple simple démontre immédiatement l’avantage d’un orchestrateur de conteneurs.

Conclusion

Un orchestrateur de conteneurs vous offre une puissante boîte à outils pour déployer des conteneurs en production. Grâce à un certain nombre de commandes simples, nous avons rendu notre application web hautement disponible et l’avons fait passer de deux à quatre conteneurs. En pratique, il n’est pas conseillé d’utiliser des commandes manuelles. En effet, le risque d’erreurs augmente et les actions manuelles limitent la possibilité de déploiement plusieurs fois par jour. Dans un prochain billet de blog, nous examinerons Azure DevOps pour déployer automatiquement des conteneurs.

Envie de découvrir comment créer et utiliser un conteneur ? Dans ce cas, hâtez-vous de lire les autres billets de blog de cette série : 

Partager cet article de blog

Laissez une réponse

Votre adresse email ne sera pas publiée. Les champs requis sont indiqués.