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.
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 plate-forme 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 containers 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.
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.
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 par exemple :
-
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/
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.
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 Trouver...
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....
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 par exemple 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...