Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
  1. Livres et vidéos
  2. Kubernetes
  3. Services managés Kubernetes
Extrait - Kubernetes Gérez la plateforme de déploiement de vos applications conteneurisées (3e édition)
Extraits du livre
Kubernetes Gérez la plateforme de déploiement de vos applications conteneurisées (3e édition) Revenir à la page d'achat du livre

Services managés Kubernetes

Objectifs du chapitre et prérequis

Les chapitres précédents ont été consacrés à la création d’objets dans un cluster Kubernetes basé sur Minikube.

Dans ce qui va suivre, l’utilisateur va faire un tour d’horizon des solutions mises à disposition par différents acteurs du cloud afin de monter sa propre infrastructure.

À noter que les services Google et Azure proposent des shells accessibles depuis leur portail d’administration. Vous n’aurez alors même pas besoin d’installer d’éléments sur votre poste pour faire vos premiers pas. Le chapitre abordera l’utilisation d’OpenTofu/Terraform afin d’introduire la thématique IAC (Infrastructure as Code) avec le service OVH.

Dans le cas où vous ne seriez pas intéressé par une installation dans le cloud, vous pouvez vous référer au chapitre suivant. Celui-ci sera consacré à la mise en place d’un cluster sur des machines traditionnelles.

Les services présentés ici ont un coût. Faites attention de ne pas créer de trop gros clusters, la facture pouvant très vite grimper.

Service managé de Google : GKE

1. Présentation du service Google

La plateforme cloud de Google (Google Cloud Platform) est un ensemble de services allant de la machine virtuelle (avec Compute Engine), les services gérés (Cloud SQL, Cloud Storage) en passant par le serverless (Cloud Functions).

Parmi ces outils, GKE (Google Kubernetes Engine) propose un service de gestion de conteneurs basé sur Kubernetes.

À noter qu’à la création d’un nouveau compte, Google propose un financement à hauteur de 300 $ de crédit. Cette somme permettra de couvrir largement les besoins d’infrastructure pour des clusters de petite taille.

L’inscription de l’utilisateur sur le service Google ne sera pas abordée. Cette inscription peut se faire directement en ligne depuis le lien suivant : https://console.cloud.google.com/

2. Administration depuis la console Google

L’administration des composants Google peut se faire depuis le portail en ligne. Entrez l’adresse suivante dans un navigateur : https://console.cloud.google.com/

Une fois authentifié, il est possible de cliquer sur une petite icône à droite de la barre de recherche dans le bandeau bleu du haut de l’écran.

images/12EP01.png

Portail d’administration des services Google et icônes du shell embarqué

 Cliquez sur cette icône et confirmez la demande de création d’un espace de travail. Le navigateur présentera alors une interface similaire à un shell Linux classique. En bonus, les utilitaires suivants seront déjà présents :

  • la commande kubectl pour l’administration de Kubernetes ;

  • la commande gcloud pour l’administration des services Google.

La commande gcloud est nécessaire pour gérer les services de Google et sera présentée en détail par la suite.

images/12EP02.PNG

Exemple de lancement de commandes depuis la console du portail d’administration des services Google

3. Installation de la commande gcloud en local

a. Installation sur Debian/Ubuntu

La création d’un cluster GKE s’appuie sur la commande gcloud. L’installation de cette commande sous Debian/Ubuntu se fait en lançant les commandes suivantes :

 Ajoutez la source de paquet :

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] \ 
     https://packages.cloud.google.com/apt...

Service managé Microsoft Azure : AKS

1. Présentation du service Azure

Microsoft Azure est un service informatique dans les nuages proposé par Microsoft. Le service a été ouvert le 1er février 2010 sous le nom de Windows Azure avant d’être renommé Microsoft Azure le 25 mars 2014.

Cette offre propose de nombreuses solutions clés en main comme :

  • la création de machines virtuelles ;

  • la gestion d’annuaires Active Directory ;

  • la messagerie en ligne ;

  • la suite bureautique Office 365 ;

  • etc.

Dans ce qui va suivre, le service AKS sera présenté avec des exemples pour sa mise en place.

L’inscription de l’utilisateur sur le service Azure ne sera pas abordée. Cette inscription peut se faire directement en ligne depuis le lien suivant : https://portal.azure.com/

2. Administration depuis la console Azure

a. Présentation de la console

L’administration d’Azure peut se faire depuis le portail en ligne de Microsoft.

 Entrez l’adresse suivante dans un navigateur : https://portal.azure.com/

images/12EP05.png

Racine du portail Azure

 Une fois authentifié, pour lancer l’interface de ligne de commande, suivez les actions suivantes :

  • Cliquez sur l’icône à droite du champ de recherche dans le bandeau du haut.

  • Choisissez le type bash.

  • Confirmez la création d’un espace de travail dans le service Cloud Drive.

Tout comme pour le service de Google, le shell mis à disposition par Azure contient la commande kubectl ainsi que la commande az. Cette dernière sera introduite un peu plus loin et permet d’administrer en ligne de commande les différents services Azure.

images/12EP06.png

Utilisation d’une ligne de commande depuis le portail Azure

b. Consultation du tableau de bord Kubernetes

Le tableau de bord de Kubernetes n’est plus installé par défaut sur les clusters. Afin de procéder à son installation, consultez la section sur le déploiement du tableau de bord Kubernetes des Annexes.

3. Installation de la commande az en local

Pour certains besoins, il n’est pas toujours possible de passer par le portail (l’automatisation de l’installation de clusters, par exemple). Dans ces cas-là, il est nécessaire de procéder à l’installation de la commande az.

a. Installation sur Debian/Ubuntu...

Service managé d’Amazon : EKS

1. Présentation du service Amazon AWS

Amazon est le fournisseur historique d’informatique dans le cloud. Son offre est très complète et il est ainsi possible de gérer énormément de types de charges différentes ou d’applications à l’aide de services managés.

Le service Kubernetes managé d’Amazon porte le nom d’EKS (Amazon Elastic Container Service for Kubernetes).

Avant l’arrivée de Kubernetes, Amazon disposait de son propre service de container as a service : ECS (Elastic Container Service).

La création d’un cluster EKS peut vite se révéler très compliquée du fait de nombreuses opérations à la charge de l’utilisateur. En effet, le service EKS ne gère que la partie plan de contrôle du cluster (master control plane).

Il revient à l’utilisateur de réaliser les autres opérations :

  • déclaration des sous-réseaux ;

  • déclaration des règles de sécurité ;

  • déclaration des rôles dans le cluster ;

  • création du groupe de machines ;

  • rattachement de ces éléments.

2. Introduction de la commande eksctl

La création d’un cluster EKS demande une bonne connaissance Amazon. Comme ce livre n’a pas vocation à expliquer le fonctionnement des services d’AWS, la suite des exercices s’appuiera sur un utilitaire qui prendra en charge ces opérations : eksctl.

Pour mémoire, cet outil est le résultat de la coopération entre la société Weaveworks et Amazon.

Son fonctionnement s’inspire de celui de kubectl, mais appliqué à la création de clusters EKS.

3. Configuration des accès Amazon

Avant de lancer la configuration du cluster, il faut récupérer des identifiants d’accès aux services d’AWS.

L’inscription sur le service Amazon ne sera pas abordée. Cette inscription peut se faire directement en ligne depuis le lien suivant : https://aws.amazon.com/fr/

Une fois connecté depuis l’interface du site d’AWS, il faut se rendre dans la console de gestion des utilisateurs en déroulant les instructions suivantes :

  • Cliquer sur le champ de recherche (en dessous du champ...

Service Kubernetes OVHcloud

1. Présentation d’OVHcloud

La société OVHcloud (anciennement OVH) est une société française spécialisée dans l’hébergement de serveurs ainsi que dans la fourniture d’accès Internet. Depuis les années 2010, la société s’est diversifiée dans l’informatique des nuages (cloud computing).

Leur service cloud offre moins de prestations ou de zones d’hébergement que les acteurs présentés précédemment. En revanche, l’indépendance vis-à-vis des GAFAM (cet acronyme désigne les sociétés Google, Apple, Facebook, Amazon et Microsoft) peut être un vrai atout dans le cas où la protection des données et le respect de certaines directives européennes (RGPD) seraient un sujet important. 

Un dernier aspect à l’utilisation de leur offre : les coûts d’hébergement sont généralement très compétitifs vis-à-vis des autres acteurs présentés surtout lors de la consommation de services sans réservation.

N’hésitez pas à consulter le chapitre Montée en charge automatique. Une partie est consacrée à la découverte des familles de machines et à la comparaison des coûts d’hébergement....

Infrastructure as Code

1. Origine du besoin

Dans une phase exploratoire ou pour un nombre limité de clusters à créer, le lancement d’opérations manuelles reste acceptable. Toutefois, lors d’un passage à l’échelle, le besoin d’automatiser ces opérations peut rapidement se faire sentir.

C’est généralement là que devient nécessaire d’utiliser des outils dits Infrastructure as Code comme Terraform (ou son fork OpenTofu).

Terraform/OpenTofu sont des produits relativement complexes à prendre en main. Les exemples présentés ici sont une petite introduction : tout ceci n’a pas vocation à servir d’exemple pour la création de clusters de production.

Dans ce qui va suivre, un exemple d’automatisation de la création d’un cluster OVH sera présenté à l’aide d’OpenTofu. À noter que les utilisateurs de Terraform devraient pouvoir utiliser ces exemples sans adaptations notables.

Tous les gestionnaires de services comme Azure, GCP ou AWS peuvent être gérés à l’aide d’OpenTofu/Terraform. Charge au lecteur d’adapter l’exemple à son besoin.

2. Installation d’OpenTofu

La première étape va être de récupérer le binaire OpenTofu sur le poste de travail. La procédure d’installation est disponible à l’emplacement suivant : https://opentofu.org/docs/intro/install/

 Dans le cas d’une installation sur une distribution Debian, entrez les instructions suivantes dans un terminal :

$ curl https://get.opentofu.org/install-opentofu.sh -o install.sh  
$ bash install.sh --install-method deb 

Le script réclame la saisie du mot de passe de l’utilisateur avant de mettre à jour les sources logicielles puis d’installer la commande tofu.

Ci-dessous le résultat attendu en cas de succès :

Installing OpenTofu...  
Reading package lists... Done  
Building dependency tree... Done  
Reading state information... Done  
The following NEW packages will be installed:  
 tofu  
0 upgraded, 1 newly installed, 0 to remove and 58 not upgraded.  
Need to get 0 B/25.1 MB of archives.  
After this operation, 82.3 MB of additional disk space will be used. ...

Accès en lecture-écriture multiple

1. Origine du besoin

Les classes de stockage définies par défaut dans un service managé sont généralement de type ReadWriteOnce : un seul pod à la fois peut écrire dans les volumes persistants. Dans la plupart des cas (base de données, middleware de messagerie), c’est un comportement attendu et souhaitable.

En revanche, pour partager des fichiers entre plusieurs pods (pour mettre en place un espace commun comme des ressources statiques), il devient nécessaire de disposer de volumes persistants de type ReadWriteMany.

Le service Azure propose un service natif pour mettre à disposition ce type de volume. Ces caractéristiques sont présentées un peu plus loin dans le chapitre.

Par défaut, les services disque d’AWS et de Google n’offrent pas cette capacité. Heureusement, il est possible de contourner le problème de deux façons :

  • à l’aide d’un serveur NFS externe au cluster : EFS pour Amazon, Filestore pour Google ou serveur dédié type NetApp ;

  • à l’aide d’un serveur déployé dans Kubernetes.

Les deux techniques seront abordées. En revanche, dans le cas du déploiement d’un serveur NFS externe à Kubernetes, sa mise en place sera à votre charge.

2. Serveur NFS déployé dans Kubernetes

a. Limitations

La création d’un serveur NFS dans Kubernetes est très simple à réaliser, mais comporte quelques limitations.

Tout d’abord, le serveur NFS déployé de cette manière n’offre pas de haute disponibilité.

Dans le cas où ce point serait important, utilisez une des alternatives suivantes :

  • un service managé dans le cloud (cf. un peu plus loin pour Amazon et Google) ;

  • un serveur NFS externe offrant une haute disponibilité ;

  • un pilote supportant les accès de type ReadWriteMany.

Les services Azure ont un pilote permettant de gérer les accès multiples (basés sur AzureFile). Consultez prioritairement la section traitant de cette mise en place dans le cas d’un cluster AKS.

b. Déploiement d’un serveur NFS

Le déploiement d’un serveur NFS se fait à l’aide du chart Helm kvaps/nfs-server-provisioner. Ce chart...