• 12 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 25/09/2024

Découvrez les acteurs de Kubernetes

Découvrez Kubernetes

Vous venez d’arriver chez LiveCorp, une grosse entreprise informatique de vente d’objets sur Internet, principalement via son site web e-commerce, en tant que Développeur junior. Dès votre premier jour, vous recevez un mail de David, votre manager :

Bienvenue chez LiveCorp, j’espère que ton premier jour d’intégration se passe bien ! Pour ton premier jour, je te propose de travailler avec Alice afin de comprendre comment fonctionne l’application e-commerce et comment tu peux développer et déployer ta première mise à jour de l’application.

Tu peux demander à Alice de t’expliquer comment créer ton premier conteneur et comment le déployer sur Kubernetes.

Bon courage et encore bienvenue chez LiveCorp !

Vous rendez alors visite à Alice, une développeuse senior, qui vous explique que vous allez travailler en équipe.

Cette équipe est composée de plusieurs personnes différentes, chacune jouant un rôle précis.

  • Il y a d’abord Alice, la développeuse senior qui vous accompagnera lors de vos premiers pas et vous servira de mentor.

  • Ensuite, Bob, un Site Reliability Engineer qui pratique le DevOps pour la mise à jour du site web.

  • Charlie est un Ops senior, responsable du maintien en condition opérationnelle du site web.

  • Louis est administrateur système.

  • Enfin, Julien est l’expert sécurité.

Durant votre premier jour, vous apprenez que le site web tourne dans un conteneur, et est déployé sur Kubernetes. Mais en tant que Développeur junior, vous ne savez ni ce qu’est un conteneur, ni ce qu’est Kubernetes, ni même à quoi correspondent ces différents rôles.

Le site principal de LiveCorp est un site e-commerce qui doit répondre à des impératifs de montée en charge rapide, de scalabilité et de résilience. De plus, le site étant en constante évolution, il doit être possible de le mettre à jour rapidement. Alice vous explique alors qu’avant l’utilisation de conteneurs, la montée de version du site était compliquée, et prenait plusieurs heures car il fallait tout d’abord le tester sur plusieurs environnements, avant de le mettre en production.

Chaque déploiement sur les environnements était différent :

  • Sur l’environnement de développement par exemple, le déploiement se faisait en copiant/collant le site web directement. 

  • Sur l’environnement de préproduction, le déploiement se faisait via un outil de déploiement interne. 

  • Enfin, sur la production, le site étant déployé sur plusieurs machines, il fallait impérativement mettre à jour toutes les machines au fur et à mesure avant que le site soit correctement déployé.

Avec l'utilisation d’un conteneur, le site e-commerce est packagé dans celui-ci et le déploiement se fait de la même manière quel que soit l’environnement.

Alice vous explique alors qu’un conteneur rend plus simple la gestion et le déploiement d’applications sur plusieurs serveurs. Kubernetes est le chef d’orchestre de ces déploiements. Il garantit une cohérence sur ces déploiements et s’occupe de distribuer les conteneurs sur plusieurs serveurs.

Les conteneurs sont une excellente manière de packager des applications et de les déployer de manière isolée et portable. Cependant, si vous gérez un grand nombre de conteneurs, il devient rapidement difficile de les suivre tous et de s'assurer qu'ils fonctionnent correctement. C'est là qu'interviennent les orchestrateurs de conteneurs.

Attends, qu’est-ce que tu veux dire par orchestrateur ?

Un orchestrateur de conteneurs est une plateforme qui automatise la gestion du cycle de vie des conteneurs. Cela inclut le déploiement, la scalabilité, la mise à jour et la réparation des conteneurs. Il permet également de surveiller les conteneurs et de s'assurer qu'ils fonctionnent correctement.

Les avantages d’un orchestrateur de conteneur

L’utilisation d’un orchestrateur de conteneur amène beaucoup d’avantages. Par exemple, l’orchestrateur peut vous aider à déployer et à gérer des milliers de conteneurs sur plusieurs serveurs sans avoir à se soucier de la montée en charge. S’il y a une plus forte demande, l’orchestrateur vous aidera à scaler automatiquement les applications afin de répondre à la demande.

OK, c’est super ! Mais que se passe-t-il quand un conteneur s’arrête ?

L’orchestrateur peut redémarrer automatiquement les conteneurs qui échouent et assurer qu'il y a toujours le bon nombre de conteneurs en cours d'exécution. Tout cela améliore la disponibilité des applications et assure une haute disponibilité de celles-ci.

Et comment il s’assure que les conteneurs sont placés au bon endroit ?

Alors ça c'est facile ! Un orchestrateur peut aussi optimiser l'utilisation des ressources en plaçant les conteneurs sur les serveurs les plus appropriés, et répondant à des contraintes techniques comme la localisation des données, l’utilisation de GPU, de machines plus puissantes ou plus optimisées. Tout cela améliore l’efficacité d’utilisation des ressources et assure que la bonne ressource est utilisée au bon moment.

Génial ! On n’a donc plus rien à faire ?

Presque plus rien à faire ! Il y a encore des étapes manuelles mais la facilité d'utilisation est accrue car vous interagissez avec une interface unique pour gérer tous vos conteneurs, ce qui facilite leur suivi et leur contrôle.

Si vous utilisez des conteneurs en production, un orchestrateur de conteneurs est indispensable. Il vous permettra de gagner du temps, d'économiser de l'argent et d'améliorer la fiabilité de vos applications.

En plus des avantages mentionnés ci-dessus, les orchestrateurs de conteneurs offrent également les avantages suivants :

  • une sécurité accrue car vos conteneurs sont isolés les uns des autres, ce qui peut aider à réduire le risque de failles de sécurité ;

  • une portabilité avancée en simplifiant le déploiement de vos applications sur différents environnements, tels que le cloud ou dans vos propres datacenters. Quel que soit l’environnement utilisé, le déploiement se fera toujours de la même manière, le conteneur étant l’élément central que l’on déploie.

Les spécificités de Kubernetes

Kubernetes, souvent abrégé en k8s ou kube, est un système open source qui se positionne comme une plateforme d'orchestration de conteneurs. En d'autres termes, il s'agit d'un logiciel permettant d'automatiser le déploiement, la scalabilité et la gestion du cycle de vie des conteneurs applicatifs.

Le principe de Kubernetes est de ne plus se préoccuper de la notion de machine. Kubernetes est une plateforme qui se charge de faire tourner une application quel que soit ce qui se passe sur les machines gérées par Kubernetes. Les machines peuvent donc redémarrer, tomber en panne, être mise à jour sans avoir d’impact sur l’application qui tourne dans un conteneur.

Kubernetes fonctionne en regroupant des machines physiques ou virtuelles en un cluster. Les conteneurs sont ensuite déployés sur ce cluster, et Kubernetes veille à leur bon fonctionnement en gérant des aspects tels que :

  • le déploiement: Kubernetes lance les conteneurs sur les machines du cluster en respectant les configurations définies.

  • la scalabilité: si la demande sur l'application augmente, Kubernetes peut lancer des conteneurs supplémentaires pour répartir la charge. Inversement, si la demande diminue, des conteneurs peuvent être arrêtés.

  • la gestion du cycle de vie: Kubernetes surveille l'état des conteneurs et peut les redémarrer en cas de défaillance.

  • la mise à jour: lors d'une mise à jour de l'application, Kubernetes déploie la nouvelle version des conteneurs en toute transparence pour les utilisateurs.

En raison de sa modularité et de sa flexibilité, Kubernetes est devenu l'orchestrateur de conteneurs le plus populaire.  Cependant, sa prise en main peut être plus complexe que d'autres solutions.

Découvrez les rôles dans Kubernetes

Maintenant que vous comprenez le rôle d’un orchestrateur de conteneur, vous essayez d’en savoir plus sur les différents rôles d’Alice, Bob et Charlie. Votre manager, David, vous a envoyé un mail avec votre première mission.

En discutant avec Alice, vous apprenez que différents personas peuvent interagir avec Kubernetes dans le cycle de vie d’une application conteneurisée.

Lors de votre premier jour d’intégration dans l’équipe, Alice vous propose de vous présenter l’équipe complète qui travaillera avec vous.

Les 5 rôles de Développeur, Sécurité, Ops, AdminSys et SRE sont détaillés dans le texte qui suit.
Résumé des différents rôles dans Kubernetes

Alice vous explique qu’elle est la développeuse qui écrit le code de l'application et crée les images des conteneurs. Kubernetes peut fournir des outils pour faciliter ce processus, comme la construction et le déploiement automatisés des images.

Vient ensuite Charlie, l’Ops de l’équipe :

  • Il est responsable du déploiement et de la gestion des applications en production. 

  • Kubernetes automatise de nombreuses tâches d'exploitation courantes, telles que la scalabilité et la reprise après sinistre, ce qui permet aux Ops de se concentrer sur des tâches plus stratégiques.

Bob est le spécialiste SRE (Site Reliability Engineering) de l’équipe :

  • Il est spécialisé en intégration et livraison continue et livre des environnements pour les développeurs et les ops. 

  • Il est aussi responsable de maintenir en condition opérationnelle les applications, la fiabilité et les performances de ces applications en production. 

  • Kubernetes lui fournit des métriques et des journaux détaillés qui peuvent être utilisés par les SRE pour surveiller les applications et identifier les problèmes potentiels.

Louis est administrateur système :

  • Il gère l'infrastructure sous-jacente sur laquelle Kubernetes s'exécute. 

  • Il doit configurer et maintenir les clusters Kubernetes, mais Kubernetes lui-même gère la plupart des aspects du cycle de vie des conteneurs.

Enfin, l’expert sécurité de l’équipe est Julien :

  • Professionnel de la sécurité, il sécurise les applications et l'infrastructure.

  • Kubernetes peut être intégré à des outils de sécurité pour aider à protéger les conteneurs et les clusters.

Une fois le tour de l’équipe fini, vous avez maintenant une vue d’ensemble des personas qui peuvent interagir avec Kubernetes, et décidez d’en savoir plus sur chacun des personas en allant discuter avec chaque personne.

Identifiez les missions du Dev

En tant que développeur au sein de l’équipe, tu dois assurer un certain nombre de missions clés. Je t’ai résumé ces missions dans le tableau ci-dessous.

Au sein d'un environnement Kubernetes, un développeur joue un rôle crucial dans la mise en place et la gestion des applications conteneurisées. Vous avez résumé les responsabilités principales du développeur dans le tableau suivant :

Tâches

Missions

Création d'images conteneur

Le développeur commence par packager le code de l'application, ses dépendances et les outils nécessaires dans une image de conteneur. Cette image encapsule tout ce qui est requis pour exécuter l'application de manière isolée et portable

Déploiement et configuration

En collaboration avec les équipes Ops, le développeur définit les configurations Kubernetes pour le déploiement de l'application conteneurisée. Cela implique la spécification du nombre de conteneurs à exécuter, des ressources à allouer et des stratégies de scalabilité

Gestion du cycle de vie des conteneurs

Le développeur utilise des outils et des interfaces Kubernetes pour surveiller l'état des conteneurs en production. Cela implique la vérification des logs, la détection d'erreurs et l'initiation de correctifs si nécessaire

Optimisation des performances

En analysant les métriques de performance de l'application, le développeur peut identifier là où l'application ralentie et apporter des optimisations à l'image du conteneur ou à la configuration Kubernetes. Il s'agit de garantir que l'application fonctionne efficacement et utilise les ressources du cluster de manière optimale

Mise à jour et maintenance

Lorsque de nouvelles versions de l'application sont développées, le développeur met à jour les images conteneur et orchestre le déploiement des mises à jour sur le cluster Kubernetes. Cela permet de s'assurer que les utilisateurs bénéficient des dernières fonctionnalités et correctifs de sécurité

Collaboration avec les équipes

Le développeur collabore étroitement avec les équipes Ops, SRE et sécurité pour garantir une intégration fluide de l'application dans l'environnement Kubernetes. Cela implique la communication des exigences de l'application, la prise en compte des contraintes de sécurité et la résolution des problèmes inter-équipes

En plus de ces responsabilités principales, les développeurs utilisant Kubernetes peuvent également s'impliquer dans des tâches plus avancées telles que la contribution à l'automatisation des déploiements, la création d'outils personnalisés pour la gestion des conteneurs ou l'exploration de nouvelles fonctionnalités de Kubernetes.

Explorez les missions de l’ingénieur DevOps

Dans le monde des conteneurs et de Kubernetes, un ingénieur DevOps joue un rôle hybride qui combine les responsabilités traditionnelles de développement et d'exploitation, c'est-à-dire les missions incombant au rôle de développeur et d'OPS. Kubernetes étant un outil central dans la gestion des conteneurs, l'ingénieur DevOps l'exploite pour fluidifier le cycle de vie des applications conteneurisées.

Alice : Je te présente Bob qui est ingénieur DevOps dans l’équipe. Bob, peux-tu expliquer tes missions au sein de notre équipe ?

Bob : Avec plaisir ! J’ai avec moi un tableau regroupant les différentes tâches et missions d’un ingénieur DevOps que je te présente.

Bob vous montre alors le tableau suivant qui récapitule les tâches d’un ingénieur DevOps :

Tâches

Mission

Automatisation des pipelines CI/CD (intégration continue et livraison continue)

L’ingénieur DevOps utilise Kubernetes pour automatiser le déploiement et la mise à jour des applications conteneurisées. Cela implique l'intégration de la construction des images de l’application, des tests automatisés et du déploiement sur le cluster Kubernetes dans un pipeline CI/CD

Fourniture d'environnements de test et de staging cohérents

L’un des rôles principaux de l’ingénieur DevOps est le provisionnement des environnements de test et de staging basés sur Kubernetes qui reflètent l'environnement de production. Cela permet aux développeurs et aux testeurs de travailler sur des versions d'application réalistes avant leur déploiement en production

Collaboration améliorée entre les développeurs et les Ops

Kubernetes fournit une plateforme commune que les développeurs et les Ops peuvent utiliser pour gérer les applications conteneurisées. Cela permet d'éliminer les silos entre les équipes et de favoriser une meilleure collaboration

Déploiements blue/green et rollbacks simplifiés

Kubernetes permet de réaliser facilement des déploiements blue/green, où la nouvelle version de l'application est déployée parallèlement à l'ancienne version. Si des problèmes surviennent, l'ingénieur DevOps peut effectuer un rollback rapide vers la version précédente

Gestion des secrets et des configurations

Les secrets et les configurations sensibles nécessaires aux applications conteneurisées sont gérés par Kubernetes. Cela permet de garantir que ces informations ne sont pas exposées accidentellement

Observabilité et dépannage des applications conteneurisées

En fournissant des outils et des métriques, Kubernetes permet à l’ingénieur DevOps de surveiller les applications conteneurisées et d'identifier les problèmes potentiels. Cela permet un dépannage plus rapide et plus efficace

L'ingénieur DevOps utilise donc Kubernetes pour automatiser les processus de développement et d'exploitation liés aux applications conteneurisées. Cela permet des déploiements plus rapides, des environnements de test plus cohérents et une collaboration améliorée entre les équipes.

En plus de ces points, les ingénieurs DevOps utilisant de Kubernetes peuvent également s'intéresser à des tâches plus avancées telles que :

  • la définition de configurations Kubernetes personnalisées pour optimiser les performances des applications ;

  • la contribution à la mise en place de stratégies de monitoring et de logging robustes ;

  • l'exploration de nouvelles fonctionnalités de Kubernetes pour améliorer l'efficacité des déploiements et de la gestion des conteneurs.

Kubernetes est un outil essentiel pour les ingénieurs DevOps qui cherchent à rationaliser le développement, le déploiement et la gestion des applications conteneurisées de manière simple, efficace et standardisée.

Découvrez les missions de l’Ops

Alice : Voici maintenant Charlie qui est l’Ops au sein de l’équipe. Charlie, peux-tu présenter ton rôle ?

Charlie : Bien sûr ! Un Ops à plusieurs tâches avec Kubernetes. Je vais te les présenter.

Le tableau ci-dessous regroupe toutes les informations nécessaires au métier d’un Ops avec Kubernetes :

Tâches

Missions

Gestion du cluster Kubernetes

Les Ops configurent et maintiennent le cluster Kubernetes lui-même. Cela implique la gestion des machines virtuelles ou physiques qui composent le cluster, la mise en place de la sécurité du cluster et la configuration des réseaux

Déploiement et orchestration des applications

En collaboration avec les développeurs, les Ops mettent en place les configurations Kubernetes nécessaires pour déployer les applications conteneurisées. Cela peut inclure la définition des ressources requises par les conteneurs, la mise en place de mécanismes de scalabilité automatique et la gestion des secrets et des variables d'environnement

Haute disponibilité et reprise après sinistre

Les applications conteneurisées doivent être disponibles et résistantes aux pannes. Cela implique la mise en place de mécanismes de redondance pour les conteneurs et les pods, la configuration de la reprise après sinistre et la définition de stratégies de basculement en cas de défaillance

Surveillance et journalisation

Les Ops surveillent l'état de santé du cluster Kubernetes et des applications conteneurisées qu'il héberge. Ils analysent les journaux d'erreurs et les métriques de performance pour identifier les problèmes potentiels et effectuer des dépannages

Gestion des quotas et des ressources

Des quotas et des limites de ressources pour les différents projets ou équipes qui utilisent le cluster Kubernetes doivent être mis en place. Cela permet de garantir une utilisation équitable des ressources du cluster et d'éviter qu'une seule application ne monopolise toutes les ressources disponibles

Intégration avec les outils et processus existants

Kubernetes s’intègre avec les outils et processus d'exploitation existants. Cela peut inclure la configuration de la surveillance avec des outils tiers, la mise en place de pipelines d'intégration et de livraison continue (CI/CD) pour les déploiements automatisés, et la définition de processus de gestion des changements pour les modifications apportées au cluster Kubernetes

Sécurité

Les Ops travaillent en étroite collaboration avec les équipes SecOps pour garantir la sécurité du cluster Kubernetes et des applications qu'il exécute. Cela implique la mise en place de politiques de sécurité pour les conteneurs, la gestion des contrôles d'accès et la définition de procédures de sécurité en cas d'incident

L'équipe Ops joue un rôle essentiel pour garantir que Kubernetes fonctionne de manière fiable et sécurisée en production. Leurs compétences en infrastructure, en gestion des systèmes et en automatisation sont essentielles pour exploiter pleinement le potentiel de Kubernetes et des applications conteneurisées.

Installez minikube

Maintenant que vous connaissez ce qu’est un conteneur et ce qu’est Kubernetes, vous avez hâte de créer votre premier conteneur, et de le déployer sur Kubernetes.

Dans un premier temps et pour tester localement vos développements du site web, vous devez installer Kubernetes sur votre poste de développement.

La page de téléchargement de minikube se trouve sur cette page de minikube start et s’adapte automatiquement à votre système d’exploitation. 

Une fois l’installation terminée, vous pouvez démarrer minikube avec la commande suivante :

minikube start

minikube va alors télécharger ses différents composants et démarrer un cluster d’un nœud.

Une fois minikube démarré, vous pouvez interagir avec lui avec les commandes suivantes :

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
$ minikube kubectl -- get pods -A
NAMESPACE NAME                           READY   STATUS RESTARTS   AGE
kube-system   coredns-7db6d8ff4d-6zxp4       0/1 Running   0      27s
kube-system   etcd-minikube                  1/1 Running   0      42s
kube-system   kube-apiserver-minikube        1/1 Running   0      42s
kube-system   kube-controller-manager-minikube   1/1 Running   0      42s
kube-system   kube-proxy-gvmkp               1/1 Running   0      27s
kube-system   kube-scheduler-minikube        1/1 Running   0      42s
kube-system   storage-provisioner            1/1 Running   0      41s

Dans ce screencast, vous avez vu comment :

  • télécharger et installer minikube ;

  • créer et démarrer votre premier cluster ;

  • interagir avec celui-ci.

C’est maintenant votre tour d’effectuer les premières tâches en tant que développeur junior !

À vous de jouer

Contexte

Alice vous a demandé d’installer minikube en prévision de votre premier développement et de vérifier que celui-ci est bien installé. Elle vous a expliqué que c’était une étape cruciale pour tester que vos conteneurs se déploient correctement.

Consignes

Vérifiez votre travail à l’aide cet exemple de corrigé

Une fois minikube installé et démarré, les deux commandes suivantes devraient vous retourner un résultat :

minikube status
minikube kubectl -- get po -A

En résumé

  • Kubernetes est le plus populaire des orchestrateurs de conteneurs.

  • Kubernetes est un outil modulaire qui permet de déployer et de gérer des applications conteneurisées à grande échelle.

  • Plusieurs personas peuvent interagir avec Kubernetes, que ce soit le Dev, l’Ops ou l'ingénieur DevOps.

  • Le rôle du Dev est de concevoir, construire, configurer et exposer l'application sur le cluster.

  • Le rôle de l’Ops est de configurer, installer et gérer le cluster.

Dans le prochain chapitre, vous allez pouvoir découvrir Kubernetes, comprendre ce qu’est un conteneur, créer votre première image et la déployer sur le cluster.

Exemple de certificat de réussite
Exemple de certificat de réussite