Installer Istio sur OVHcloud Managed Kubernetes
Découvrez comment installer le service mesh Istio sur un cluster OVHcloud Managed Kubernetes, déployer l'application exemple Bookinfo et visualiser le trafic avec Kiali
Istio est un service mesh et une plateforme open source visant à réduire la complexité du déploiement, de la sécurisation, du contrôle et de l'observation des services distribués. Comme l'explique le site d'Istio, Istio vous aide à :
- contrôler le flux de trafic entre les services ;
- sécuriser les services et gérer l'authentification, l'autorisation et le chiffrement des communications inter-services ;
- appliquer et faire respecter des politiques sur les services distribués ;
- surveiller les services en collectant des métriques, des logs et des traces.
Ce tutoriel montre comment installer Istio sur un cluster OVHcloud Managed Kubernetes Service nouvellement créé. Vous pouvez utiliser la fonction Réinitialiser le cluster dans la section Public Cloud de l' pour réinitialiser votre cluster avant de suivre ce tutoriel.
Avant de commencer
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez la documentation Déployer une application Hello World.
Télécharger Istio
Istio est installé dans son propre namespace istio-system et peut gérer les services de tous les autres namespaces.
1. Accédez à la page des versions d'Istio pour télécharger le fichier d'installation correspondant à votre système d'exploitation, ou téléchargez et extrayez automatiquement la dernière version (Linux ou macOS) :
2. Déplacez-vous dans le répertoire du package Istio. Par exemple, si le package est istio-1.11.2 :
Le répertoire d'installation contient :
- des applications d'exemple dans
samples/; - le binaire client
istioctldans le répertoirebin/.
3. Ajoutez le client istioctl à votre variable d'environnement PATH, sur un système macOS ou Linux :
Pour la suite du tutoriel, restez dans ce répertoire.
Installer Istio
Cette installation utilise l'outil de ligne de commande istioctl, qui offre une personnalisation avancée du control plane Istio et des sidecars du data plane Istio. Il intègre une validation des entrées utilisateur pour aider à prévenir les erreurs d'installation, ainsi que des options de personnalisation pour modifier n'importe quel aspect de la configuration.
Dans ce tutoriel, vous allez installer Istio avec le profil par défaut ; d'autres profils existent.
Le namespace istio-system est créé avec tous les composants Istio.
Installer les modules complémentaires (addons)
Istio intègre plusieurs applications de télémétrie différentes. Elles peuvent vous aider à comprendre la structure de votre service mesh, à afficher la topologie du mesh et à analyser son état de santé.
Suivez les instructions ci-dessous pour déployer le tableau de bord Kiali, ainsi que Prometheus, Grafana et Jaeger.
Installez Kiali et les autres modules complémentaires, puis attendez qu'ils soient déployés :
Exemple de résultat :
Vérifier l'installation
1. Listez les services du namespace istio-system avec kubectl get services -n istio-system et vérifiez que les services suivants sont déployés : istiod, istio-ingressgateway et les modules complémentaires : grafana, jaeger, kiali, prometheus, tracing et zipkin.
Exemple de résultat :
Comme la création du LoadBalancer est asynchrone et que son provisionnement peut prendre plusieurs minutes, vous obtiendrez probablement un statut pending pour le champ EXTERNAL-IP de istio-ingressgateway. Réessayez dans quelques minutes pour obtenir l'URL externe permettant d'appeler votre instance Istio.
2. Listez les pods du namespace istio-system avec kubectl get pods -n istio-system et vérifiez que les pods suivants sont déployés et que tous les conteneurs sont actifs : istiod-*, istio-ingressgateway-* et les modules complémentaires : grafana-*, jaeger-*, kiali-* et prometheus-*.
Exemple de résultat :
Déployer une application
Pour vérifier qu'Istio fonctionne dans le cluster, déployez l'application de test Bookinfo — une application composée de plusieurs microservices qui permet de vérifier qu'Istio fonctionne comme prévu.
Installer Bookinfo
L'injecteur de sidecar Istio, installé avec Istio, injecte automatiquement des conteneurs Envoy dans les pods de votre application. L'injecteur suppose que les pods de l'application s'exécutent dans des namespaces portant le label istio-injection=enabled.
Créez et labellisez un namespace istio-apps :
Ajoutez ensuite le label istio-injection=enabled :
Exemple de résultat :
Déployez maintenant le manifeste bookinfo dans le namespace :
La commande ci-dessus installe et lance, dans le namespace istio-apps, les quatre microservices illustrés dans le schéma ci-dessus : details, productpage, ratings et les trois versions de reviews :
Vous pouvez maintenant vérifier que tous les services et pods sont correctement définis et en cours d'exécution :
1. Utilisez kubectl -n istio-apps get services pour vérifier que les services details, productpage, ratings et reviews sont actifs :
2. Utilisez kubectl -n istio-apps get pods pour vérifier que details-v1-*, productpage-v1-*, ratings-v1-*, reviews-v1-*, reviews-v2-* et reviews-v3-* sont actifs :
Exemple de résultat :
Comme vous pouvez le constater, chaque pod comporte 2 conteneurs : le conteneur de l'application et le sidecar Istio qui est déployé avec lui.
Vérifiez que tout fonctionne correctement jusqu'à présent. Exécutez cette commande pour voir si l'application s'exécute dans le cluster et sert des pages HTML, en vérifiant le titre de la page dans la réponse :
Ouvrir l'application au trafic externe
Maintenant que les services Bookinfo sont actifs, vous devez rendre l'application accessible depuis l'extérieur de votre cluster Kubernetes, par exemple depuis un navigateur. Une Gateway Istio est utilisée à cette fin.
1. Associez cette application à la gateway Istio :
2. Vérifiez qu'il n'y a aucun problème avec la configuration :
3. Confirmez que la gateway a bien été créée :
Déterminer l'IP et le port d'entrée (ingress)
Définissez GATEWAY_URL, l'URL du service istio-gateway.
Vous pouvez l'obtenir avec les commandes suivantes :
Confirmer que l'application est en cours d'exécution
Pour confirmer que l'application Bookinfo fonctionne, exécutez la commande curl suivante :
Vous devriez obtenir un code de statut HTTP 200 indiquant que votre productpage fonctionne correctement.
Vous pouvez également ouvrir dans votre navigateur http://<YOUR_GATEWAY_URL>/productpage (dans notre exemple, http://135.125.84.93:80/productpage) pour afficher la page web Bookinfo. Si vous actualisez la page plusieurs fois, vous devriez voir différentes versions des avis affichées sur la page produit, présentées selon un principe de répartition circulaire (round robin : étoiles rouges, étoiles noires, aucune étoile), car nous n'avons pas encore utilisé Istio pour contrôler le routage des versions.
Visualiser le trafic
Une fois les modules complémentaires Istio installés, vous pouvez accéder au tableau de bord Kiali. La commande suivante crée un tunnel entre le service Kiali et votre machine, puis ouvre le lien du tableau de bord dans votre navigateur préféré :
Pour afficher le trafic, sélectionnez Graph dans le menu de navigation de gauche, puis istio-apps dans le menu déroulant Namespace.
Pour voir les données de trace, vous devez envoyer des requêtes à votre service. Pour envoyer 100 requêtes au service productpage, utilisez la commande suivante :
Le tableau de bord Kiali affiche une vue d'ensemble de votre mesh avec les relations entre les services de l'application exemple Bookinfo. Il fournit également des filtres pour visualiser le flux de trafic.
Et ensuite ?
Vous disposez désormais d'une application Bookinfo fonctionnelle déployée sur Istio. Vous pouvez suivre les suggestions de la page de l'application exemple Bookinfo et utiliser cet exemple pour découvrir les fonctionnalités d'Istio en matière de routage de trafic, d'injection de pannes, de limitation de débit, etc. Pour poursuivre, consultez un ou plusieurs des exemples Istio, selon vos centres d'intérêt. Routage intelligent est un bon point de départ pour les débutants.
Suppression (nettoyage)
Pour désinstaller l'application Bookinfo, la méthode la plus simple consiste à utiliser le script cleanup.sh fourni :
Pour confirmer l'arrêt, vous pouvez lister les virtual services, destination rules, gateway et pods du namespace istio-apps :
Exemple de résultat :
Vous pouvez maintenant désinstaller Istio avec la commande istioctl :
Cette commande supprime les permissions RBAC et toutes les ressources rattachées hiérarchiquement au namespace istio-system. Vous pouvez ignorer sans risque les erreurs concernant des ressources inexistantes, car elles ont pu être supprimées de manière hiérarchique.
Le namespace istio-system n'est pas supprimé par défaut. S'il n'est plus nécessaire, utilisez la commande suivante pour le supprimer :
Et supprimez le namespace istio-apps :
Exemple de résultat :
Aller plus loin
-
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
-
Échangez avec notre communauté d'utilisateurs.