
Istio est un outil pratique pour connecter, protéger et surveiller des applications distribuées. Istio utilise différentes technologies pour déployer et gérer des logiciels à grande échelle, y compris des conteneurs pour emballer le code de l'application et ses dépendances pour le déploiement, et Kubernetes pour gérer ces conteneurs. Par conséquent, pour travailler avec Istio, vous devez comprendre comment fonctionne une application multservices basée sur ces technologies. sans Istio. Si ces outils et concepts vous sont déjà familiers, n'hésitez pas à sauter ce guide et à passer directement à la section. ou installation de l'extension .
Ce guide étape par étape vous présentera l'ensemble du processus, de la source à l'image du conteneur sur GKE, afin de vous donner une vue d'ensemble de ces technologies par l'exemple. Vous verrez également comment Istio tire parti de ces technologies. Il est supposé que vous ne savez rien sur les conteneurs, Kubernetes, le maillage de services ou Istio.
Objectifs
Dans ce guide, vous réaliserez les tùches suivantes :
- Explorer une application hello world avec plusieurs services.
- Lancer l'application Ă partir du code source.
- Emballer l'application dans des conteneurs.
- Créer un cluster Kubernetes.
- Déployer des conteneurs dans le cluster.
Avant de commencer
Suivez les instructions pour activer l'API Kubernetes Engine :
- Accédez à la dans la console Google Cloud Platform.
- Créez ou sélectionnez un projet.
- Attendez que l'API et les services associés soient activés. Cela peut prendre quelques minutes.
- Assurez-vous que la facturation est activée pour le projet Google Cloud Platform. .
Dans ce guide, vous pouvez utiliser Cloud Shell, qui prépare une machine virtuelle sous Linux basé sur Debian, ou un ordinateur sous Linux ou macOS.
Option A : utiliser Cloud Shell
Avantages de l'utilisation de Cloud Shell :
- Environnements de développement Python 2 et Python 3 (y compris virtualenv) complÚtement configurés.
- Outils en ligne de commande gcloud, docker, git et kubectl, que nous allons utiliser, sont déjà installés.
- Vous avez le choix entre plusieurs :
- , qui s'ouvre avec l'icĂŽne d'Ă©dition en haut de la fenĂȘtre Cloud Shell.
- Emacs, Vim ou Nano, qui s'ouvrent Ă partir de la ligne de commande dans Cloud Shell.
Pour utiliser :
- Allez dans la console GCP.
- Cliquez sur le bouton Activer Cloud Shell (Activer Cloud Shell) en haut de la fenĂȘtre de la console GCP.
![]()
En bas une session Cloud Shell s'ouvrira dans une nouvelle fenĂȘtre avec la ligne de commande.

Option B : utiliser les outils de ligne de commande localement
Si vous travaillez sur un ordinateur avec Linux ou macOS, vous devez configurer et installer les composants suivants :
Configurez .
avec l'outil de ligne de commande gcloud.
Installez kubectl â outil de ligne de commande pour travailler avec .
gcloud components install kubectlInstallez . Vous utiliserez l'outil de ligne de commande docker, pour créer des images de conteneurs pour l'exemple d'application.
Installez l'outil , pour obtenir l'exemple d'application Ă partir de GitHub.
Téléchargement de l'exemple de code
Téléchargez le code source helloserver:
git clone https://github.com/GoogleCloudPlatform/istio-samplesAccédez au répertoire de l'exemple de code :
cd istio-samples/sample-apps/helloserver
Exploration de l'application avec plusieurs services
L'exemple d'application est écrit en Python et se compose de deux composants qui interagissent via :
- serveur: un serveur simple avec un point de terminaison GET, /, qui affiche « hello world » dans la console.
- loadgen: un script qui envoie du trafic vers serveur, avec un nombre configurable de requĂȘtes par seconde.

Exécution de l'application à partir du code source
Pour explorer l'exemple d'application, exécutez-le dans Cloud Shell ou sur votre ordinateur.
1) Dans le répertoire istio-samples/sample-apps/helloserver exécutez serveur:
python3 server/server.pyLors de l'exécution, le message suivant s'affiche : serveur INFO:root:Starting server...
2) Ouvrez une autre fenĂȘtre de terminal pour envoyer des requĂȘtes Ă . Si vous utilisez Cloud Shell, cliquez sur l'icĂŽne d'ajout pour ouvrir une autre session. serveur3) Envoyez une requĂȘte Ă
curl http://localhost:8080 serveur:
le serveur rĂ©pond :4) Ă partir du rĂ©pertoire oĂč vous avez tĂ©lĂ©chargĂ© l'exemple de code, accĂ©dez au rĂ©pertoire contenant
Hello World!cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen loadgen:
5) Créez les variables d'environnement suivantes :export SERVER_ADDR=http://localhost:8080 export REQUESTS_PER_SECOND=5
6) Exécutezvirtualenv --python python3 env virtualenv:
7) Activez l'environnement virtuel :source env/bin/activate
8) Installez les dépendances pourpip3 install -r requirements.txt loadgen:
9) Exécutezpython3 loadgen.py loadgen:
affiche environ le message suivant :Lors de l'exécution, le message suivant s'affiche : loadgen Starting loadgen: 2019-05-20 10:44:12.448415 5 request(s) complete to http://localhost:8080
Dans une autre fenĂȘtre de terminalaffiche environ les messages suivants dans la console : serveur 127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 - INFO:root:GET request, Path: / Headers: Host: localhost:8080 User-Agent: python-requests/2.22.0 Accept-Encoding: gzip, deflate Accept: */*
127.0.0.1 - - [21/Juin/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:Demande GET,
Chemin: /
En-tĂȘtes:
HĂŽte: localhost:8080
Agent-utilisateur: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*Du point de vue du rĂ©seau, toute l'application fonctionne sur un seul hĂŽte (ordinateur local ou machine virtuelle Cloud Shell). Il est donc possible d'utiliser localhost, pour envoyer des requĂȘtes Ă serveur.
10) Pour arrĂȘter loadgen et serveur, entrez Ctrl-c dans chaque fenĂȘtre de terminal.
11) Dans la fenĂȘtre de terminal loadgen dĂ©sactivez l'environnement virtuel :
deactivateEmballage de l'application dans des conteneurs
Pour exĂ©cuter l'application sur GKE, il faut emballer l'exemple d'application â serveur et loadgen â dans . Un conteneur est un moyen d'emballer l'application pour l'isoler de son environnement.
Pour emballer l'application dans un conteneur, il faut Dockerfile. Dockerfile â c'est un fichier texte qui dĂ©finit les commandes pour construire le code source de l'application et ses dĂ©pendances en AprĂšs la construction, vous tĂ©lĂ©chargez l'image dans un registre de conteneurs, comme Docker Hub ou .
L'exemple contient déjà Dockerfile pour serveur et loadgen avec toutes les commandes nécessaires pour construire des images. Voici un exemple : Dockerfile pour serveur:
FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
g++
&& rm -rf /var/lib/apt/lists/*
# Activer la journalisation sans tampon
FROM base as final
ENV PYTHONUNBUFFERED=1
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
wget
WORKDIR /helloserver
# Récupérer les paquets du builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Ajouter l'application
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]- Commande FROM python:3-slim as base permet Ă Docker d'utiliser la derniĂšre comme base.
- Commande COPY . . copie les fichiers source dans le répertoire de travail actuel (dans notre cas, uniquement server.py) dans le systÚme de fichiers du conteneur.
- ENTRYPOINT définit la commande qui est utilisée pour exécuter le conteneur. Dans notre cas, cette commande est presque identique à celle que vous avez utilisée pour exécuter server.py à partir du code source.
- Commande EXPOSE indique que serveur s'attend à recevoir des données via le port 8080. Cette commande ne . C'est une sorte de documentation nécessaire pour ouvrir le port 8080 lors du démarrage du conteneur.
Préparation à la conteneurisation de l'application
1) Définissez les variables d'environnement suivantes. Remplacez PROJECT_ID par l'identifiant de votre projet GCP.
export PROJECT_ID="PROJECT_ID"export GCR_REPO="preparing-istio"Avec les valeurs PROJECT_ID et GCR_REPO vous étiquetez l'image Docker lorsque vous la construisez et l'envoyez à un registre de conteneurs privé.
2) Définissez le projet GCP par défaut pour l'outil en ligne de commande gcloud.
gcloud config set project $PROJECT_ID3) Définissez la zone par défaut pour l'outil en ligne de commande gcloud.
gcloud config set compute/zone us-central1-b4) Assurez-vous que le service Container Registry est activé dans le projet GCP.
gcloud services enable containerregistry.googleapis.comContainerisation du serveur
Accédez au répertoire contenant l'exemple serveur:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/Construisez l'image à l'aide de Dockerfile et des variables d'environnement que vous avez définies précédemment :
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
ParamÚtre -t représente le tag Docker. C'est le nom de l'image que vous utilisez lors du déploiement du conteneur.
- Envoyez l'image vers le Container Registry :
docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1
Containerisation du loadgen
1) Accédez au répertoire contenant l'exemple loadgen:
cd ../loadgen2) Construisez l'image :
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .3) Envoyez l'image vers le Container Registry :
docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1Afficher la liste des images
Vérifiez la liste des images dans le dépÎt et assurez-vous que les images ont été envoyées :
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istioLa commande retourne les noms des images récemment envoyées :
NOM
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgenCréation d'un cluster GKE.
Ces conteneurs pourraient ĂȘtre exĂ©cutĂ©s sur une machine virtuelle Cloud Shell ou sur un ordinateur avec la commande docker run. Mais en production, un moyen d'orchestration centralisĂ©e des conteneurs est nĂ©cessaire. Par exemple, un systĂšme est nĂ©cessaire pour s'assurer que les conteneurs fonctionnent toujours, et il faut un moyen d'augmenter l'Ă©chelle et de lancer des instances supplĂ©mentaires des conteneurs en cas d'augmentation du trafic.
Pour exĂ©cuter des applications conteneurisĂ©es, vous pouvez utiliser . GKE est une plateforme d'orchestration des conteneurs qui regroupe des machines virtuelles en un cluster. Chaque machine virtuelle est appelĂ©e un nĆud. Les clusters GKE sont basĂ©s sur le systĂšme open source de gestion des clusters Kubernetes. Kubernetes fournit des mĂ©canismes d'interaction avec le cluster.
Création d'un cluster GKE :
1) Créez un cluster :
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4Commande gcloud crĂ©e un cluster istioready dans le projet GCP et dans la zone par dĂ©faut que vous avez indiquĂ©e. Pour exĂ©cuter Istio, il est recommandĂ© d'avoir au moins 4 nĆuds et une machine virtuelle .
La commande crĂ©e le cluster en quelques minutes. Lorsque le cluster est prĂȘt, la commande retourne quelque chose de similaire .
2) Indiquez les informations d'identification dans l'outil en ligne de commande , afin de gérer le cluster :
gcloud container clusters get-credentials istioready3) Vous pouvez maintenant communiquer avec Kubernetes via kubectl. Par exemple, la commande suivante peut ĂȘtre utilisĂ©e pour vĂ©rifier l'Ă©tat des nĆuds :
kubectl get nodesLa commande retourne la liste des nĆuds :
NOM ĂTAT RĂLES ĂGE VERSION
gke-istoready-default-pool-dbeb23dc-1vg0 PrĂȘt 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5 PrĂȘt 100s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s PrĂȘt 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw PrĂȘt 99s v1.13.6-gke.13Concepts clĂ©s de Kubernetes
Le schéma montre une application sur GKE :

Avant de déployer des conteneurs sur GKE, familiarisez-vous avec les concepts clés de Kubernetes. à la fin, il y a des liens si vous souhaitez en savoir plus.
- NĆuds et clusters. Dans GKE, un nĆud est une machine virtuelle. Sur d'autres plateformes Kubernetes, un nĆud peut ĂȘtre un ordinateur ou une machine virtuelle. Un cluster est un ensemble de nĆuds que l'on peut considĂ©rer comme un tout, oĂč vous dĂ©ployez une application conteneurisĂ©e.
- Pods. Dans Kubernetes, les conteneurs s'exécutent dans des pods. Un pod dans Kubernetes est une unité indivisible. Un pod contient un ou plusieurs conteneurs. Vous déployez les conteneurs server et loadgen dans des pods séparés. Lorsque plusieurs conteneurs se trouvent dans un pod (par exemple, le serveur d'application et ), les conteneurs sont gérés comme un seul objet et partagent les ressources du pod.
- DĂ©ploiements. Dans Kubernetes, un dĂ©ploiement est un objet reprĂ©sentant un ensemble de pods identiques. Un dĂ©ploiement exĂ©cute plusieurs rĂ©pliques de pods, rĂ©parties sur les nĆuds du cluster. Le dĂ©ploiement remplace automatiquement les pods qui Ă©chouent ou qui ne rĂ©pondent pas.
- Service Kubernetes. Lorsque vous exĂ©cutez le code de l'application sur GKE, la connexion entre loadgen et serveur. Lorsque vous avez lancĂ© des services sur une machine virtuelle Cloud Shell ou sur un ordinateur, vous envoyiez des requĂȘtes Ă serveur Ă l'adresse localhost:8080. AprĂšs le dĂ©ploiement sur GKE, les pods s'exĂ©cutent sur les nĆuds disponibles. Par dĂ©faut, vous ne pouvez pas gĂ©rer quel nĆud exĂ©cute un pod, donc les n'ont pas d'adresses IP permanentes.
Pour obtenir une adresse IP pour serveur, il faut définir une abstraction réseau au-dessus des pods. C'est ce qu'est le . Le service Kubernetes fournit un point d'accÚs permanent pour un ensemble de pods. Il existe plusieurs . serveur utilise LoadBalancer, qui fournissent une adresse IP externe pour se connecter à serveur depuis l'extérieur du cluster.
De plus, Kubernetes dispose d'un systĂšme DNS intĂ©grĂ© qui attribue des noms DNS (par exemple, helloserver.default.cluster.local) services. GrĂące Ă cela, les pods Ă l'intĂ©rieur d'un cluster peuvent se connecter Ă d'autres pods dans le cluster via une adresse permanente. Le nom DNS ne peut pas ĂȘtre utilisĂ© en dehors du cluster, par exemple dans Cloud Shell ou sur un ordinateur.
Manifestes Kubernetes
Lorsque vous avez lancé l'application à partir du code source, vous avez utilisé une commande impérative python3
server.py
L'impérativité implique un verbe : « faites cela ».
Kubernetes utilise . Cela signifie que nous ne disons pas Ă Kubernetes ce qu'il faut faire, mais dĂ©crivons l'Ă©tat souhaitĂ©. Par exemple, Kubernetes dĂ©marre et arrĂȘte des pods au besoin pour que l'Ă©tat rĂ©el du systĂšme corresponde Ă l'Ă©tat dĂ©sirĂ©.
L'état souhaité est spécifié dans les manifestes, ou fichiers . Le fichier YAML contient des spécifications pour un ou plusieurs objets Kubernetes.
L'exemple contient un fichier YAML pour serveur et loadgen. Chaque fichier YAML indique l'état souhaité de l'objet de déploiement et du service Kubernetes.
server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloserver
spec:
selector:
matchLabels:
app: helloserver
replicas: 1
template:
metadata:
labels:
app: helloserver
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
containers:
- name: main
image: gcr.io/google-samples/istio/helloserver:v0.0.1
imagePullPolicy: Always- kind indique le type d'objet.
- metadata.name indique le nom du déploiement.
- Le premier champ spec contient la description de l'état souhaité.
- spec.replicas indique le nombre souhaité de pods.
- Section spec.template définit le modÚle du pod. Dans la spécification des pods, il y a un champ image, qui indique le nom de l'image à extraire du Container Registry.
Le service est défini comme suit :
apiVersion: v1
kind: Service
metadata:
name: hellosvc
spec:
type: LoadBalancer
selector:
app: helloserver
ports:
- name: http
port: 80
targetPort: 8080- LoadBalancer: les clients envoient des requĂȘtes Ă l'adresse IP du load balancer, qui a une adresse IP permanente et qui est accessible depuis l'extĂ©rieur du cluster.
- targetPort: comme vous vous en souvenez, la commande EXPOSE 8080 dans Dockerfile ne fournissait pas de ports. Vous exposez le port 8080, afin de pouvoir se connecter au conteneur serveur de l'extérieur du cluster. Dans notre cas, hellosvc.default.cluster.local:80 (nom court : hellosvc) correspond au port 8080 L'adresse IP du pod helloserver.
- port: c'est le numĂ©ro de port oĂč les autres services du cluster enverront des requĂȘtes.
loadgen.yaml
L'objet de déploiement dans loadgen.yaml est similaire à server.yaml. La différence est que l'objet de déploiement contient une section env. Elle définit les variables d'environnement nécessaires loadgen et que vous avez défini lors du lancement de l'application à partir du code source.
apiVersion: apps/v1
kind: Deployment
metadata:
name: loadgenerator
spec:
selector:
matchLabels:
app: loadgenerator
replicas: 1
template:
metadata:
labels:
app: loadgenerator
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
containers:
- name: main
image: gcr.io/google-samples/istio/loadgen:v0.0.1
imagePullPolicy: Always
env:
- name: SERVER_ADDR
value: "http://hellosvc:80/"
- name: REQUESTS_PER_SECOND
value: "10"
resources:
requests:
cpu: 300m
memory: 256Mi
limits:
cpu: 500m
memory: 512MiUn loadgen n'accepte pas les demandes entrantes, pour le champ type est spĂ©cifiĂ© ClusterIP. Ce type fournit une adresse IP permanente qui peut ĂȘtre utilisĂ©e par les services dans le cluster, mais cette adresse IP n'est pas fournie aux clients externes.
apiVersion: v1
kind: Service
metadata:
name: loadgensvc
spec:
type: ClusterIP
selector:
app: loadgenerator
ports:
- name: http
port: 80
targetPort: 8080Déploiement des conteneurs sur GKE
1) Accédez au répertoire contenant l'exemple serveur:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/2) Ouvrez server.yaml dans un éditeur de texte.
3) Remplacez le nom dans le champ image par le nom de votre image Docker.
image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1Remplacez PROJECT_ID par l'identifiant de votre projet GCP.
4) Enregistrez et fermez server.yaml.
5) Déployez le fichier YAML dans Kubernetes :
kubectl apply -f server.yamlAprÚs l'exécution réussie, la commande renvoie le code suivant :
deployment.apps/helloserver created
service/hellosvc created6) AccĂ©dez au rĂ©pertoire oĂč se trouve loadgen:
cd ../loadgen7) Ouvrez loadgen.yaml dans un éditeur de texte.
8) Remplacez le nom dans le champ image par le nom de votre image Docker.
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1Remplacez PROJECT_ID par l'identifiant de votre projet GCP.
9) Enregistrez et fermez loadgen.yaml, fermez l'éditeur de texte.
10) Déployez le fichier YAML dans Kubernetes :
kubectl apply -f loadgen.yamlAprÚs l'exécution réussie, la commande renvoie le code suivant :
deployment.apps/loadgenerator created
service/loadgensvc created11) Vérifiez l'état des pods :
kubectl get podsLa commande affiche l'état :
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s12) Récupérez les journaux de l'application à partir du pod loadgen. Remplacez POD_ID par l'identifiant de la réponse précédente.
kubectl logs loadgenerator-POD_ID13) Obtenez les adresses IP externes hellosvc:
kubectl get serviceLa réponse de la commande ressemble à ceci :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hellosvc LoadBalancer 10.81.15.158 192.0.2.1 80:31127/TCP 33m
kubernetes ClusterIP 10.81.0.1 443/TCP 93m
loadgensvc ClusterIP 10.81.15.155 80/TCP 4m52s14) Envoyez une demande au hellosvc: remplacez EXTERNAL_IP par l'adresse IP externe hellosvc.
curl http://EXTERNAL_IPPassons Ă Istio
Vous avez dĂ©jĂ une application dĂ©ployĂ©e sur GKE. loadgen peut utiliser le DNS Kubernetes (hellosvc:80), pour envoyer des requĂȘtes Ă serveur, et vous pouvez envoyer des requĂȘtes Ă serveur par l'adresse IP externe. Bien que Kubernetes ait de nombreuses fonctionnalitĂ©s, certaines informations sur les services font dĂ©faut :
- Comment les services interagissent-ils ? Quelle est la relation entre les services ? Comment le trafic passe-t-il entre les services ? Vous savez que loadgen envoie des requĂȘtes Ă serveur, mais imaginez que vous ne sachiez rien de l'application. Pour rĂ©pondre Ă ces questions, examinons la liste des pods en cours d'exĂ©cution dans GKE.
- MĂ©triques. Combien de temps serveur rĂ©pond Ă la requĂȘte entrante ? Combien de requĂȘtes par seconde arrivent sur le serveur ? Ămet-il des messages d'erreur ?
- Informations sur la sĂ©curitĂ©. Le trafic entre loadgen et serveur passe simplement par . L'augmentation de la performance de Nginx est due Ă l'utilisation d'une architecture asynchrone gĂ©rĂ©e par Ă©vĂ©nements, contrairement Ă un modĂšle multithread. Cela, combinĂ© Ă un haut niveau de parallĂ©lisme, permet Ă Nginx de traiter les requĂȘtes avec une mĂ©moire minimale. Cela fait de Nginx une excellente solution pour les serveurs web, qu'il s'agisse de gros ou de petits volumes de trafic. Nginx est une solution mature et entiĂšrement documentĂ©e, permettant une configuration facile selon vos besoins. Les dĂ©veloppeurs utilisent Ă©galement Nginx comme proxy inverse pour ou par ?
Toutes ces questions trouvent réponse grùce à Istio. Pour cela, Istio place un proxy sidecar dans chaque pod. Le proxy Envoy intercepte tout le trafic entrant et sortant vers les conteneurs de l'application. Cela signifie que serveur et loadgen reçoivent par le proxy sidecar Envoy, et tout le trafic de loadgen sur serveur passe par le proxy Envoy.
Les connexions entre les proxies Envoy forment un réseau de services. L'architecture de ce réseau de services offre un niveau de contrÎle au-dessus de Kubernetes.

Ătant donnĂ© que les proxies Envoy s'exĂ©cutent dans leurs propres conteneurs, Istio peut ĂȘtre installĂ© au-dessus du cluster GKE sans modifier le code de l'application. Mais vous avez dĂ» faire un certain travail pour prĂ©parer l'application Ă ĂȘtre gĂ©rĂ©e par Istio :
- Services pour chaque conteneur. Chaque dĂ©ploiement serveur et loadgen est associĂ© Ă un service Kubernetes. MĂȘme celui loadgen, qui ne reçoit pas de requĂȘtes entrantes, a un service.
- Les ports dans les services doivent avoir des noms. Bien que dans GKE, les ports des services puissent rester sans nom, Istio exige qu'un soit spĂ©cifiĂ© en fonction de son protocole. Dans le fichier YAML, le port pour serveur appelĂ© http, car le serveur utilise le protocole . L'augmentation de la performance de Nginx est due Ă l'utilisation d'une architecture asynchrone gĂ©rĂ©e par Ă©vĂ©nements, contrairement Ă un modĂšle multithread. Cela, combinĂ© Ă un haut niveau de parallĂ©lisme, permet Ă Nginx de traiter les requĂȘtes avec une mĂ©moire minimale. Cela fait de Nginx une excellente solution pour les serveurs web, qu'il s'agisse de gros ou de petits volumes de trafic. Nginx est une solution mature et entiĂšrement documentĂ©e, permettant une configuration facile selon vos besoins. Les dĂ©veloppeurs utilisent Ă©galement Nginx comme proxy inverse pour. Si service utilisait gRPC, vous appelleriez le port grpc.
- Les dĂ©ploiements sont marquĂ©s. Cela vous permet d'utiliser les fonctionnalitĂ©s de gestion du trafic d'Istio, comme la rĂ©partition du trafic entre les versions d'un mĂȘme service.
Installation d'Istio
Istio peut ĂȘtre installĂ© de deux maniĂšres. Vous pouvez ou sur le cluster. Avec Istio sur GKE, il est facile de gĂ©rer l'installation et la mise Ă niveau d'Istio dans le cycle de vie du cluster GKE. Si vous avez besoin de la toute derniĂšre version d'Istio ou d'un plus grand contrĂŽle sur la configuration du tableau de bord Istio, installez la version open-source plutĂŽt que l'extension Istio sur GKE. Pour choisir l'approche, lisez l'article .
Choisissez une option, consultez le guide correspondant et suivez les instructions pour installer Istio sur le cluster. Si vous souhaitez utiliser Istio avec une application nouvellement déployée, pour l'espace de noms default.
Nettoyage
Pour éviter que des frais ne soient facturés par votre compte Google Cloud Platform pour les ressources que vous avez utilisées dans ce guide, supprimez le cluster de conteneurs lorsque vous avez installé Istio et que vous avez fini de tester l'exemple d'application. Cela supprimera toutes les ressources du cluster, telles que les instances de calcul, les disques et les ressources réseau.
Et aprĂšs ?
Découvrez les technologies suivantes :
Découvrez les outils suivants :
Découvrez les concepts de Kubernetes :
Source : habr.com
