GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial Istio:Guida introduttiva alle nozioni di base di Istio

Introduzione

Un modo pratico per gestire i microservizi di un'applicazione cloud-native consiste nell'automatizzare le funzioni di rete dell'applicazione.

Istio è una piattaforma di service mesh configurabile che funge da piano di controllo, distribuendo la configurazione a proxy e gateway sidecar. È un'opzione popolare per connettere, monitorare e proteggere i container in un cluster Kubernetes.

In questo tutorial imparerai come installare Istio, distribuire un'applicazione di test e configurare il tuo cluster Kubernetes per funzionare con la piattaforma.

Prerequisiti

  • Un cluster (o minikube) Kubernetes
  • strumento da riga di comando kubectl

Scarica l'ultima versione di Istio

Per scaricare l'ultima versione di Istio, vai alla pagina della versione di Istio su GitHub.

In alternativa, gli utenti Linux possono utilizzare curl per scaricare ed estrarre automaticamente l'ultima versione:

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

Il comando estrae i file di installazione nella cartella denominata istio-[version] :

Per scaricare una versione precedente di Istio, usa curl , ma specifica la versione e l'architettura del processore utilizzando la seguente sintassi:

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

Guida all'installazione di Istio

1. Avvia il tuo cluster Kubernetes. Questo articolo usa minikube:

minikube start

2. Successivamente, avvia l'installazione di Istio spostandoti nella cartella con i file estratti:

cd istio-1.9.2

3. Il bin/ la directory contiene istioctl binario client. In Linux, aggiungi il client al tuo percorso digitando:

export PATH=$PWD/bin:$PATH

La variabile impostata in questo modo dura solo fino a quando non termini la sessione di shell corrente. Per impostare la variabile in modo permanente, leggi come impostare le variabili di ambiente in Linux.

4. Usa il istioctl strumento per avviare il processo di installazione:

istioctl install --set profile=demo -y

L'output conferma l'avvenuta installazione:

5. Istio può iniettare automaticamente proxy sidecar Envoy al momento della distribuzione dell'applicazione. Per abilitarlo, usa kubectl per aggiungere un'etichetta dello spazio dei nomi contenente questa istruzione:

kubectl label namespace default istio-injection=enabled

Questo conclude il processo di installazione di Istio.

Verifica la distribuzione tramite l'applicazione Bookinfo

L'archivio di installazione di Istio contiene tutti i file necessari per distribuire l'applicazione di esempio denominata Bookinfo .

1. Inizia applicando il bookinfo.yaml file utilizzando kubectl :

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

Il sistema crea diverse distribuzioni, servizi e pod:

2. Controlla i servizi in esecuzione:

kubectl get services

3. Controlla se i pod sono pronti:

kubectl get pods

Mentre i pod salgono, Istio schiera i sidecar insieme a loro:

4. Attendi fino al READY l'etichetta per ogni pod è 2/2 . Quindi esegui il comando seguente per vedere se l'app fornisce correttamente le pagine HTML:

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

L'output dovrebbe essere il tag del titolo della pagina, insieme al titolo stesso:

5. Il passaggio successivo consiste nell'aprire l'app al traffico esterno. Applica il bookinfo-gateway.yaml file dai samples cartella:

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

L'output conferma che l'applicazione è stata associata correttamente al gateway Istio:

6. Usa istioctl per analizzare la configurazione e verificare potenziali problemi:

istioctl analyze

Se il sistema non rileva problemi, viene visualizzato il seguente messaggio:


7. Per accedere al gateway configurato nel passaggio precedente, impostare le variabili di ingresso. Innanzitutto, esporta INGRESS_PORT :

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

8. Ora, ripeti la procedura per SECURE_INGRESS_PORT :

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

9. Utilizzare il comando echo per verificare se le porte sono state assegnate correttamente:

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

L'output mostra i numeri di porta:


10. Esporta il INGRESS_HOST variabile:

export INGRESS_HOST=$(minikube ip)

11. Verifica la variabile con echo :

echo "$INGRESS_HOST"

12. Per indirizzare il traffico verso l'Istio Ingress Gateway, apri una nuova finestra del terminale e digita il seguente comando:

minikube tunnel

Minikube ora funge da bilanciamento del carico per Istio. L'output mostra minikube che dirige il traffico:


13. Torna alla finestra del terminale precedente ed esporta il GATEWAY_URL variabile, che consiste nel INGRESS_HOST e INGRESS_PORT variabili:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

14. Usa echo per vedere l'intero indirizzo IP e il numero di porta:

echo "$GATEWAY_URL"

15. Digitare il seguente comando per visualizzare l'indirizzo esterno dell'applicazione:

echo http://$GATEWAY_URL/productpage

16. Copiare l'indirizzo ottenuto nel passaggio precedente e incollarlo in un browser web. Il sito Web di Bookinfo viene caricato correttamente:

Configura un cluster Kubernetes per Istio

Istio viene fornito con una serie di componenti aggiuntivi per i servizi Istio più diffusi, come dashboard Grafana, software di tracciamento delle transazioni Jaeger, scraper di metriche Prometheus e console di gestione Kiali.

1. Installa questi componenti aggiuntivi applicando i samples/addons cartella:

kubectl apply -f samples/addons

2. Ora crea una risorsa Kubernetes Ingress per ciascuno degli addon. Fallo incollando quanto segue in un yaml file.

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. Salva il file e applica la configurazione con kubectl:

kubectl apply -f [file-name]

I componenti aggiuntivi sono ora configurati e pronti per essere utilizzati.


Linux
  1. Iniziare con Zsh

  2. Iniziare con ls

  3. Iniziare con Samba per l'interoperabilità

  4. Iniziare con PostgreSQL su Linux

  5. Introduzione a SSH in Linux

Tutorial Docker – Introduzione a Docker in Linux

Tutorial Vagrant – Introduzione a Vagrant in Linux

Tutorial Podman - Inizia con Podman

Iniziare con Nix Package Manager

Iniziare con systemctl

Introduzione all'esercitazione Docker di Azure