Essentiellement, Kubernetes expose un service backend En interne dans le cluster et le front-end interagit avec ce service. Les pods qui offrent le service peuvent très bien être remplacés et personne ne remarquerait rien. Mais à mesure que les fonctionnalités de vos applications augmentent, le nombre de services dont vous avez besoin pour maintenir augmente également. Chaque service peut potentiellement parler à tous les autres services du cluster, et le réseau résultant est appelé Maillot de service.
Il y a beaucoup de modules complémentaires pour Kubernetes pour nous aider à simplifier la gestion de ce maillot de service. De nombreuses fonctionnalités de clés comme TLS, l'équilibrage automatisé de charge, la sécurisation des API même sur le réseau interne, etc. sont offertes par ces ajouts. De nombreuses options telles que Istio, Linkerd et Conduit peuvent être intégrées à Kubernetes pour y parvenir. Nous examinerons Istio dans ce post car c'est la version 1.0 a récemment été annoncé.
Pour commencer avec Istio, vous auriez besoin d'un cluster Kubernetes fonctionnel. Il y a trois façons d'obtenir cela.
Pourquoi utiliser un maillage de service?
L'installation d'un maillage de service, comme Istio facilite le travail avec les microservices. Pendant le développement, vous n'avez pas à vous soucier du fait que votre microservice devrait offrir un support pour les TL mutuels, l'équilibrage des charges ou tout autre aspect tel que la découverte de service. Un maillage de service idéal vous permet de connecter les microservices, de les sécuriser les uns des autres et du monde extérieur, et de les gérer de manière organisée. Il aide énormément les développeurs et les opérateurs.
Installation d'Istio
L'installation d'Istio nécessite d'avoir un cluster Kubernetes. Si vous avez un seul cluster de nœuds comme vous obtenez avec Minikube ou Docker sur le bureau, toutes les commandes peuvent être exécutées sur votre nœud local. Cependant, si vous utilisez un cluster multi-nœuds comme celui que Katacoda Playground propose, gardez à l'esprit que la plupart des commandes et des procédures de configuration sont effectuées sur le nœud maître. Oui, cela affecte l'ensemble du cluster, mais nous devons interagir uniquement avec le nœud maître.
Nous commençons par le clonage (ou le téléchargement) La dernière version d'Istio de GitHub. Les utilisateurs de Windows souhaiteront peut-être visiter cette page et obtenir le approprié .zipper déposer.
$ curl -l https: // git.IO / Getlatestistio | shot -
$ cd istio-1.0.0
Le nom du repo peut changer au fil du temps au fur et à mesure de la nouvelle version, au moment de la rédaction de ce document 1.0.0 est la dernière version stable. Ce repo contient non seulement l'extension de maillage de service, mais aussi un exemple d'application intitulée BookInfo à des fins d'expérimentation. Le script ajoute également le nouveau répertoire $ PWD / ISTIO-1.0.0 / bin à votre variable de chemin.
Ce répertoire contient istioctl binaire qui peut être utilisé pour interagir avec le cluster. Les utilisateurs de Windows peuvent simplement appeler le binaire en allant dans le dossier Istio-1.0.0 \ bac et appel .\ Istioctl Utilisation de PowerShell ou de l'invite de commande. Mais c'est un module complémentaire en option.
Si vous utilisez Mac, vous pouvez le faire en utilisant la commande suivante:
$ Export Path = $ pwd / bin: $ chemin
Ensuite, nous devons étendre notre API Kubernetes avec des définitions de ressources (CRD) personnalisées qu'Istio nous fournit.
$ kubectl appliquer -f installation / kubernetes / helm / istio / modèles / crds.yamlCela pourrait prendre effet en quelques secondes et une fois que vous aurez fait votre kube-apiserver aura des extensions d'istio qui y seront intégrées. À partir de là, les options d'installation varient selon que vous l'utilisez à des fins de production ou si vous l'expérimentez dans votre propre environnement isolé.
Nous allons supposer que ce dernier est le cas et installer Istio sans authentification TLS.
$ kubectl appliquer -f installation / kubernetes / istio-demo.yamlCela créera un nouvel espace de noms Istio-System où tous les différents composants comme Istio-Pilot et Ingress Gateway seront installés.
Déploiement d'application et injecteur Istio
Voici l'utilité d'Istio. Istio ajoute des procurations SideCar à vos services, ce qui se fait sans modifier le code réel de votre application. Si l'injecteur automatique d'istio-sidecar est activé. Vous pouvez étiqueter un espace de noms avec Istio-Injection = activé et lorsque votre application est déployée sur cet espace de noms, les pods eux-mêmes auront des conteneurs envoyés spécialisés ainsi que les conteneurs de l'application de base. Par exemple, étiquetons l'espace de noms par défaut
$ kubectl étiquette de noms d'espace par défaut istio-injection = activé
Déployons maintenant l'exemple d'application BookInfo dans cet espace de noms. Du répertoire racine du représentant Isitio que nous avons cloné, courir:
$ kubectl appliquer -f échantillons / bookinfo / plate-forme / kube / bookinfo.yamlVous pouvez répertorier toutes les gousses en cours d'exécution ici:
$ kubectl obtenir des pods
Choisissez n'importe quel pod à partir de ceux et voyez ses détails. Par exemple, l'une des pods de l'application BookInfo dans mon déploiement est nommée Détails-V1-6865B9B99D-6MXX9
$ kubectl Décrivez les pods / détails-V1-6865B9B99D-6MXX9
Dans la description, vous remarquerez que le pod contient deux conteneurs, d'abord un composant de l'exécution réelle de l'application d'image - bookinfo-details-v1: 1.8.0 et le second est l'istio-proxy exécutant l'image gcr.IO / Istio-Release / Proxyv2: 1.0.0 .
Istio offre un contrôle à grain fin sur votre maillage de service car il injecte ces conteneurs jusqu'aux gousses où résident vos applications. Ceci combiné avec un TLS facile à utiliser pour la communication et le contrôle du trafic à grain fin est l'une des nombreuses raisons pour lesquelles les grandes applications peuvent bénéficier d'un maillage de service comme Istio.
L'architecture réelle a beaucoup de composants comme le pilote, la citadelle et le mélangeur avec chacun avec son propre rôle important pour jouer. Vous pouvez en savoir beaucoup plus sur ces composants ici et essayer de déployer votre propre microservice ici.