Activer l'injection du proxy Istio dans l'environnement natif Oracle Cloud

Introduction

Istio est un maillage de service qui fournit une couche d'infrastructure distincte pour gérer la communication entre services. La communication réseau est abstraite des services eux-mêmes et est gérée par les proxies. Istio utilise une conception en marge, ce qui signifie que les proxies de communication s'exécutent dans leurs propres conteneurs en regard de chaque conteneur de service. Pour mettre en oeuvre l'injection de la marge automatique, l'espace de noms à utiliser par une application doit être étiqueté avec istio-injection=enabled.

Objectifs

Ce tutoriel vous explique comment activer l'injection secondaire par proxy automatique et ainsi tirer parti des fonctionnalités d'Istio dans l'environnement natif Oracle Cloud.

Dans ce tutoriel, vous déployez une application sans l'injection automatique de la marge proxy activée. Vous activez ensuite l'injection de la marge proxy automatique et déployez à nouveau l'application. Vous pouvez ensuite constater que les pods du maillage de service exécutent un proxy de séparation Istio.

Prérequis

Environnement natif Oracle Cloud version 1.4 déployé, cluster Kubernetes inclus. Reportez-vous aux tutoriels à l'adresse suivante :

Déployer un environnement natif Oracle Cloud hautement disponible

Déployer l'environnement natif Oracle Cloud

Vous devez également déployer un maillage de service à l'aide du module Istio. Pour plus d'informations sur le déploiement du module Istio, reportez-vous à la documentation relative à l'environnement natif Oracle Cloud.

Vérifier que Istio est installé et en cours d'exécution

Sur un noeud de plan de contrôle, utilisez la commande suivante pour afficher les déploiements dans l'espace de noms istio-system.

kubectl get deployment -n istio-system

La sortie doit ressembler à ce qui suit :

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
grafana                2/2     2            2           2m44s
istio-egressgateway    2/2     2            2           2m48s
istio-ingressgateway   2/2     2            2           2m48s
istiod                 2/2     2            2           3m2s
prometheus-server      2/2     2            2           2m44s

Créer un déploiement NGINX simple

Utilisez la commande suivante pour créer un déploiement nommé hello-world qui exécute l'image nginx.

kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world

Affichage des pods Kubernetes dans l'espace de noms par défaut

Utilisez la commande suivante pour répertorier les pods.

kubectl get pods

La sortie doit ressembler à ce qui suit :

NAME              READY   STATUS    RESTARTS   AGE
hello-world-...   1/1     Running   0          18s

Notez que la colonne READY est 1/1, ce qui indique que l'injection de la marge du proxy automatique Istio n'est pas activée.

Supprimer le déploiement NGINX

Utilisez la commande suivante pour supprimer le déploiement hello-world.

kubectl delete deployments hello-world

Activer l'injection de texte secondaire par proxy automatique

Pour mettre en oeuvre l'injection de la marge automatique, l'espace de noms à utiliser par une application doit être étiqueté avec istio-injection=enabled. L'exemple suivant étiquette l'espace de noms par défaut.

kubectl label namespace default istio-injection=enabled

La commande kubectl get namespace confirme que l'espace de noms par défaut est correctement étiqueté.

kubectl get namespace -L istio-injection

La sortie doit ressembler à ce qui suit :

NAME                           STATUS   AGE   ISTIO-INJECTION
default                        Active   23m   enabled
externalip-validation-system   Active   22m   
istio-system                   Active   19m   
kube-node-lease                Active   23m   
kube-public                    Active   23m   
kube-system                    Active   23m   
kubernetes-dashboard           Active   22m   

L'espace de noms par défaut comprend désormais le libellé ISTIO_INJECTION.

Créer un déploiement NGINX simple

Utilisez la commande suivante pour créer un déploiement nommé hello-world qui exécute l'image nginx.

kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world

Affichage des pods Kubernetes dans l'espace de noms par défaut

Utilisez la commande kubectl get pods pour répertorier les pods.

kubectl get pods

La sortie doit ressembler à ce qui suit :

NAME              READY   STATUS    RESTARTS   AGE
hello-world-...   2/2     Running   0          20s

Notez que la colonne READY est 2/2, ce qui indique que l'injection de la marge par proxy automatique Istio est activée et que les pods du maillage exécutent un proxy istio sidecar.

Désactiver l'injection de la marge du proxy automatique

Supprimez le libellé istio-injection=enabled de l'espace de noms par défaut à l'aide de kubectl label, comme indiqué.

kubectl label namespace default istio-injection-

La commande kubectl get namespace confirme que l'étiquette est supprimée de l'espace de noms par défaut.

kubectl get namespace -L istio-injection

La sortie doit ressembler à ce qui suit :

NAME                           STATUS   AGE   ISTIO-INJECTION
default                        Active   39m   
externalip-validation-system   Active   38m   
istio-system                   Active   36m   
kube-node-lease                Active   39m   
kube-public                    Active   39m   
kube-system                    Active   39m   
kubernetes-dashboard           Active   38m   

Enfin, supprimez le déploiement NGINX.

kubectl delete deployments hello-world

Pour plus d'informations

Ressources de formation supplémentaires

Explorez d'autres exercices dans docs.oracle.com/learn ou accédez à des contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur de formation Oracle.

Pour consulter la documentation produit, accédez à Oracle Help Center.