GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel Istio :Premiers pas avec les bases d'Istio

Présentation

Un moyen pratique de gérer les microservices d'une application cloud native consiste à automatiser les fonctions du réseau d'application.

Istio est une plate-forme de maillage de services configurable agissant comme un plan de contrôle, distribuant la configuration aux proxys et passerelles side-car. Il s'agit d'une option populaire pour connecter, surveiller et sécuriser les conteneurs dans un cluster Kubernetes.

Dans ce didacticiel, vous apprendrez à installer Istio, à déployer une application de test et à configurer votre cluster Kubernetes pour qu'il fonctionne avec la plate-forme.

Prérequis

  • Un cluster Kubernetes (ou minikube)
  • outil de ligne de commande kubectl

Télécharger la dernière version d'Istio

Pour télécharger la dernière version d'Istio, accédez à la page de publication d'Istio sur GitHub.

Alternativement, les utilisateurs de Linux peuvent utiliser curl pour télécharger et extraire automatiquement la dernière version :

curl -L https://istio.io/downloadIstio | sh -

La commande extrait les fichiers d'installation dans le dossier nommé istio-[version] :

Pour télécharger une ancienne version d'Istio, utilisez curl , mais précisez la version et l'architecture du processeur en utilisant la syntaxe suivante :

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -

Guide d'installation Istio

1. Démarrez votre cluster Kubernetes. Cet article utilise minikube :

minikube start

2. Ensuite, démarrez l'installation d'Istio en vous déplaçant dans le dossier contenant les fichiers extraits :

cd istio-1.9.2

3. Le bin/ le répertoire contient istioctl binaire client. Sous Linux, ajoutez le client à votre chemin en tapant :

export PATH=$PWD/bin:$PATH

La variable définie de cette manière ne dure que jusqu'à ce que vous terminiez la session shell en cours. Pour définir la variable de manière permanente, lisez comment définir des variables d'environnement sous Linux.

4. Utilisez le istioctl outil pour lancer le processus d'installation :

istioctl install --set profile=demo -y

La sortie confirme la réussite de l'installation :

5. Istio peut injecter automatiquement des proxys side-car Envoy lors du déploiement de l'application. Pour l'activer, utilisez kubectl pour ajouter une étiquette d'espace de noms contenant cette instruction :

kubectl label namespace default istio-injection=enabled

Ceci conclut le processus d'installation d'Istio.

Tester le déploiement via l'application Bookinfo

L'archive d'installation d'Istio contient tous les fichiers nécessaires au déploiement de l'exemple d'application appelé Bookinfo .

1. Commencez par appliquer le bookinfo.yaml fichier en utilisant kubectl :

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

Le système crée plusieurs déploiements, services et pods :

2. Vérifiez les services en cours :

kubectl get services

3. Vérifiez si les pods sont prêts :

kubectl get pods

Au fur et à mesure que les pods augmentent, Istio déploie des side-cars avec eux :

4. Attendez que le READY l'étiquette de chaque pod est 2/2 . Exécutez ensuite la commande suivante pour voir si l'application diffuse correctement les pages HTML :

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o ""

Le résultat doit être la balise de titre de la page, ainsi que le titre lui-même :

5. L'étape suivante consiste à ouvrir l'application au trafic extérieur. Appliquez le bookinfo-gateway.yaml fichier à partir des samples dossier :

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

Le résultat confirme que l'application a bien été associée à la passerelle Istio :

6. Utilisez istioctl pour analyser la configuration et vérifier les problèmes potentiels :

istioctl analyze

Si le système ne détecte aucun problème, le message suivant s'affiche :


7. Pour accéder à la passerelle configurée à l'étape précédente, définissez les variables d'entrée. Tout d'abord, exportez INGRESS_PORT :

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

8. Maintenant, répétez le processus pour SECURE_INGRESS_PORT :

export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

9. Utilisez la commande echo pour vérifier si les ports ont été attribués avec succès :

echo "$INGRESS_PORT" && echo "$SECURE_INGRESS_PORT"

La sortie affiche les numéros de port :


10. Exportez le INGRESS_HOST variables :

export INGRESS_HOST=$(minikube ip)

11. Vérifiez la variable avec echo :

echo "$INGRESS_HOST"

12. Pour diriger le trafic vers la passerelle d'entrée Istio, ouvrez une nouvelle fenêtre de terminal et saisissez la commande suivante :

minikube tunnel

Minikube sert désormais d'équilibreur de charge pour Istio. La sortie montre que minikube dirige le trafic :


13. Revenez à la fenêtre de terminal précédente et exportez le GATEWAY_URL variable, qui se compose de INGRESS_HOST et INGRESS_PORT variables :

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

14. Utilisez echo pour voir l'intégralité de l'adresse IP et du numéro de port :

echo "$GATEWAY_URL"

15. Tapez la commande suivante pour afficher l'adresse externe de l'application :

echo http://$GATEWAY_URL/productpage

16. Copiez l'adresse obtenue à l'étape précédente et collez-la dans un navigateur Web. Le site Web Bookinfo se charge correctement :

Configurer un cluster Kubernetes pour Istio

Istio est livré avec un certain nombre de modules complémentaires pour les services Istio populaires, tels que le tableau de bord Grafana, le logiciel de suivi des transactions Jaeger, le scraper de métriques Prometheus et la console de gestion Kiali.

1. Installez ces modules complémentaires en appliquant les samples/addons dossier :

kubectl apply -f samples/addons

2. Maintenant, créez une ressource Kubernetes Ingress pour chacun des addons. Pour ce faire, collez ce qui suit dans un yaml fichier.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: istio-system
  namespace: istio-system
  annotations:
    kubernetes.io/ingress.class: istio
spec:
  rules:
  - host: my-istio-dashboard.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: grafana
          servicePort: 3000
  - host: my-istio-tracing.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: tracing
          servicePort: 9411
  - host: my-istio-logs-database.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: prometheus
          servicePort: 9090
  - host: my-kiali.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: kiali
          servicePort: 20001

3. Enregistrez le fichier et appliquez la configuration avec kubectl :

kubectl apply -f [file-name]

Les modules complémentaires sont maintenant configurés et prêts à être utilisés.


Linux
  1. Premiers pas avec Zsh

  2. Démarrer avec ls

  3. Premiers pas avec Samba pour l'interopérabilité

  4. Premiers pas avec PostgreSQL sous Linux

  5. Premiers pas avec SSH sous Linux

Tutoriel Docker - Premiers pas avec Docker sous Linux

Tutoriel Vagrant - Premiers pas avec Vagrant sous Linux

Tutoriel Podman - Premiers pas avec Podman

Premiers pas avec le gestionnaire de paquets Nix

Premiers pas avec systemctl

Tutoriel de démarrage avec Azure Docker