IBM Cloud Docs
Service Mesh on Red Hat OpenShift on IBM Cloud

Service Mesh on Red Hat OpenShift on IBM Cloud

Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.

Questa esercitazione spiega come installare Red Hat OpenShift Service Mesh insieme ai microservizi per un'applicazione di esempio chiamata BookInfo in un cluster Red Hat OpenShift on IBM Cloud. Scoprirai inoltre come configurare un gateway Ingress Istio per esporre un servizio all'esterno della rete di servizi, eseguire la gestione del traffico per configurare attività importanti come il test A/B e le distribuzioni canary, proteggere la comunicazione del tuo microservizio e utilizzare le metriche, la registrazione e la traccia per osservare i servizi.

In base al progetto Istio open source, la mesh di servizi Red Hat OpenShift aggiunge un livello trasparente alle applicazioni distribuite esistenti. La mesh del servizio Red Hat OpenShift fornisce una piattaforma per l'analisi comportamentale e il controllo operativo sui tuoi microservizi in rete in una rete di servizi. Con Red Hat OpenShift, è possibile collegare, proteggere e monitorare i microservizi nel cluster Red Hat OpenShift on IBM Cloud.

Istio è una piattaforma aperta per collegare, proteggere, controllare e osservare microservizi, noti anche come service mesh, su piattaforme cloud come Kubernetes in Red Hat OpenShift on IBM Cloud.

Obiettivi

  • Installare Red Hat OpenShift Service Mesh nel proprio cluster
  • Distribuisci un'applicazione di esempio BookInfo
  • Utilizza le metriche, la registrazione e la traccia per osservare i servizi
  • Configura il gateway Ingress Istio
  • Esegui la gestione del traffico semplice, ad esempio i test A/B e le distribuzioni canary
  • Proteggi la tua rete utilizzando mTLS

dell'architettura*Diagramma dell'architettura dell'

  1. L'amministratore crea un cluster Red Hat OpenShift on IBM Cloud e installa l'operatore Service Mesh insieme ad altri operatori di telemetria.
  2. L'amministratore crea uno spazio dei nomi (progetto) istio-system e ServiceMeshControlPlane.
  3. L'amministratore crea uno spazio dei nomi bookinfo con l'inserimento automatico di sidecar abilitato e distribuisce l'applicazione BookInfo (con quattro microservizi separati) in Service Mesh.
  4. L'amministratore espone l'applicazione al traffico esterno con il gateway Ingress Istio.
  5. L'utente accede in modo sicuro (HTTPS) all'applicazione tramite il browser.
  6. L'amministratore monitora l'integrità e le prestazioni dei microservizi utilizzando le metriche, le tracce e i log.

Prima di iniziare

Questa esercitazione richiede:

  • la CLI IBM Cloud,
    • il plugin IBM Cloud Kubernetes Service (kubernetes-service),
  • oc per interagire con OpenShift.

Troverai le istruzioni per scaricare e installare questi strumenti per il tuo ambiente operativo nella guida Introduzione alle esercitazioni.

Per evitare l'installazione di questi strumenti, si può usare la Cloud Shell dalla console IBM Cloud. Utilizza oc version per garantire che la versione della CLI Red Hat OpenShift on IBM Cloud corrisponda alla versione del tuo cluster (4.13.x). Se non corrispondono, installare la versione corrispondente seguendo queste istruzioni.

Creare un cluster Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, hai un modo rapido e sicuro per inserire in un contenitore e distribuire i carichi di lavoro aziendali nei cluster. I cluster Red Hat OpenShift on IBM Cloud si basano sull'orchestrazione del contenitore Kubernetes che offre coerenza e flessibilità per le tue operazioni del ciclo di vita di sviluppo.

In questa sezione, eseguirai il provisioning di un cluster Red Hat OpenShift on IBM Cloud in una (1) zona con due (2) nodi di lavoro:

  1. Accedi al tuo conto IBM Cloud e crea un cluster Red Hat OpenShift on IBM Cloud dalla pagina di creazione del clusterRed Hat OpenShift on IBM Cloud.
  2. Impostare il Servizio di orchestrazione su 4.13.x versione di Red Hat OpenShift on IBM Cloud.
  3. Seleziona la tua titolarità OCP.
  4. In Infrastructure scegli Classic o VPC
    • Per Red Hat OpenShift on IBM Cloud sull'infrastruttura VPC, devi creare un VPC e una sottorete prima di creare il cluster Kubernetes. Creare o ispezionare il VPC desiderato tenendo presente quanto segue (vedere le istruzioni fornite in Creazione di un cluster VPC standard ):
      • Una sottorete che può essere utilizzata per questa esercitazione, annota il nome e la zona della sottorete.
      • Il gateway pubblico è collegato alla sottorete
    • Seleziona il VPC desiderato
    • Seleziona un servizio Cloud Object Storage esistente o creane uno se necessario e poi selezionalo
  5. In Location
    • Per Red Hat OpenShift on IBM Cloud sull'infrastruttura VPC
      • Seleziona un gruppo di risorse (Resource group)
      • Deseleziona le zone non applicabili
      • Nella zona desiderata verifica il nome della sottorete desiderata e se non è presente, fai clic sull'icona a forma di matita di modifica per selezionare il nome della sottorete desiderata
    • Per Red Hat OpenShift on IBM Cloud sull'infrastruttura Classic, attieniti alle istruzioni contenute in Creazione di un cluster classico standard.
      • Seleziona un gruppo di risorse (Resource group)
      • Seleziona un'area geografica (Geography)
      • Seleziona Single zone come Availability
      • Scegli un Datacenter
  6. In Worker pool,
    • Seleziona 4 vCPUs 16GB Memory come profilo
    • Seleziona 2 nodi di lavoro per ogni data center per questa esercitazione (solo per la classica: lascia selezionato Encrypt local disk)
  7. In Dettagli risorse, impostare il nome del cluster su -myopenshiftcluster, sostituendo <your-initials> con le proprie iniziali.
  8. Fai clic su Crea per eseguire il provisioning di un cluster Red Hat OpenShift on IBM Cloud.

Prendi nota del gruppo di risorse selezionato in precedenza. Questo stesso gruppo di risorse verrà utilizzato per tutte le risorse in questo lab.

Accedere al cluster utilizzando la IBM Cloud Shell

La Red Hat OpenShift on IBM Cloud Container Platform CLI espone comandi per la gestione delle applicazioni e strumenti di livello inferiore per interagire con ogni componente del sistema. La CLI è disponibile utilizzando il comando oc.

Per evitare di installare gli strumenti della riga di comando, l'approccio consigliato è quello di usare il IBM Cloud Shell.

La shell IBM Cloud è uno spazio di lavoro shell basato sul cloud a cui puoi accedere tramite il tuo browser. È preconfigurato con l'intera IBM Cloud E molti plug-in e strumenti che si possono usare per gestire applicazioni, risorse e infrastrutture.

In questo passo, utilizzerai la shell IBM Cloud e configurerai oc per puntare al cluster a te assegnato.

  1. Quando il cluster è pronto, nella pagina della panoramica del cluster fai clic su OpenShift web console per aprire la console. Assicurarsi di non chiudere questa finestra/tab
  2. Sulla console Web, fare clic sul menu a discesa sotto il proprio nome nell'angolo destro dello schermo e selezionare Copia comando di login, quindi fare clic sul collegamento Visualizza token.
  3. Copia il testo in Log in with this token.
  4. In una nuova tab/finestra del browser, apri IBM Cloud Shell per avviare una nuova sessione. Una volta avviata la sessione, dovresti essere automaticamente collegato alla CLI IBM Cloud. Assicurarsi di non chiudere questa finestra/tab.
  5. Controlla la versione della CLI OpenShift:
    oc version
    
  6. La versione deve essere almeno 4.13.x, altrimenti installare la versione più recente seguendo queste istruzioni.
  7. Incolla il comando di login che hai copiato dalla console web e premi Invio. Una volta collegato utilizzando il comando oc login, immetti il seguente comando per visualizzare tutti gli spazi dei nomi nel tuo cluster
    oc get ns
    
  8. Dal proprio Cloud Shell, creare un progetto chiamato "bookinfo" con il comando oc new-project. Il progetto conterrà l'applicazione creata dopo l'installazione della rete di servizi.
    oc new-project bookinfo
    
    In Red Hat OpenShift, un progetto è uno spazio dei nomi Kubernetes con annotazioni aggiuntive.

Installa Service Mesh - Istio

In questa sezione, installerai Service Mesh - Istio sul cluster. L'installazione di Service Mesh comporta l'installazione degli operatori Elasticsearch, Jaeger, Kiali e Service Mesh, la creazione e la gestione di una risorsa ServiceMeshControlPlane per distribuire il piano di controllo e la creazione di una risorsa ServiceMeshMemberRoll per specificare gli spazi dei nomi associati a Service Mesh.

Alcuni dei progetti hanno più operatori. Fare attenzione ad installare quelli specificati di seguito

Elasticsearch - Si basa sul progetto Elasticsearch open source che ti abilita a configurare e gestire un cluster Elasticsearch per la traccia e la registrazione con Jaeger.

Jaeger - Si basa sul progetto Jaeger open source, ti consente di eseguire la traccia per monitorare e risolvere i problemi con le transazioni in sistemi distribuiti complessi.

Kiali - Si basa sul progetto Kiali open source, fornisce l'osservabilità per la tua rete di servizi. Utilizzando Kiali puoi visualizzare le configurazioni, monitorare il traffico e visualizzare ed analizzare le tracce in una sola console.

Red Hat OpenShift Service Mesh- Basato sul progetto open source Istio, consente di collegare, proteggere, controllare e osservare i microservizi che compongono le applicazioni.

Installa gli operatori

  1. Nel riquadro sinistro della console web Red Hat OpenShift, selezionare Amministratore nel menu a discesa.
  2. Selezionare Operatori e poi OperatorHub.
  3. Cerca OpenShift Elasticsearch Operator, fai clic su Install, lascia la selezione predefinita e fai clic su Install.
  4. Ripetere i passi 2 e 3 precedenti per l'installazione degli operatori,
    1. Red Hat OpenShift piattaforma di traccia distribuita
    2. Kiali (fornito da Red Hat)
    3. Red Hat OpenShift Mesh del servizio.

Questa procedura installa gli operatori nel progetto predefinito openshift-operators e li rende disponibili a tutti i progetti nel cluster.

Distribuzione del piano di servizio Red Hat OpenShift Piano di controllo della rete di servizi

L'operatore Red Hat OpenShift Utilizza una risorsa ServiceMeshControlPlane per determinare come installare Istio e quali componenti si desiderano. Creiamo ora quella risorsa.

  1. Per creare un nuovo progetto, andare su Home nel riquadro sinistro della console web, fare clic su Progetti e quindi su Crea progetto.
  2. Inserire istio-system nel nome e fare clic su Crea.
  3. Spostarsi su Operatori e fare clic su Operatori installati.
  4. Seleziona istio-system dal menu Project sulla barra superiore.
  5. Fai clic su Red Hat OpenShift Service Mesh. Se non lo vedi, attendi un paio di minuti e aggiorna.
  6. Nella scheda Dettagli, sotto il riquadro Istio Service Mesh Control Plane, fare clic su Create Instance o Create ServiceMeshControlPlane.
  7. Quindi, fai clic su Create. L'operatore crea i componenti pod, servizi e piano di controllo Service Mesh in base ai tuoi parametri di configurazione.
  8. Per verificare che il piano di controllo della mesh dei servizi sia installato correttamente, fare clic su Base in Name nell'elenco. Nella pagina successiva, dovresti vedere Componenti pronti. Inoltre, quando si passa alla sezione Condizioni della pagina, è necessario visualizzare il motivo ComponentsReady e un messaggio All component deployments are Available.

Crea una ServiceMeshMemberRoll

La risorsa ServiceMeshMemberRoll viene utilizzata per specificare gli spazi dei nomi associati a Service Mesh.

  1. Passa nuovamente a OperatorsInstalled Operators.
  2. Fai clic su Red Hat OpenShift Service Mesh.
  3. Nella scheda Dettagli, sotto il riquadro Istio Service Mesh Member Roll, fare clic su Create Instance o Create ServiceMeshMemberRoll e selezionare YAML View
  4. Modificare your-project in bookinfo ed eliminare l'ultima riga (- another-of-your-projects). Dopo le modifiche, lo YAML dovrebbe essere simile a questo:
    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        - bookinfo
    
  5. Quindi, fai clic su Create.

Hai correttamente installato Istio nel tuo cluster.

Distribuisci l'applicazione BookInfo su Service Mesh

L' applicazione BookInfo visualizza le informazioni su un libro, in modo simile a una singola voce del catalogo di un negozio di libri online. Vengono visualizzati sulla pagina una descrizione del libro, i dettagli del libro (ISBN, numero di pagine e così via) e alcune recensioni del libro.

L'applicazione Bookinfo viene suddivisa in quattro microservizi separati:

  • productpage. Il microservizio productpage richiama i microservizi details e reviews per popolare la pagina.
  • details. Il microservizio details contiene le informazioni sul libro.
  • reviews. Il microservizio reviews contiene le recensioni del libro. Richiama inoltre il microservizio ratings.
  • ratings. Il microservizio ratings contiene le informazioni sulla valutazione di un libro che accompagnano una recensione del libro.

Ci sono 3 versioni del microservizio reviews:

  • La versione v1 non richiama il servizio ratings.
  • La versione v2 richiama il servizio ratings e visualizza ogni valutazione con delle stelle nere, da 1 a 5.
  • La versione v3 richiama il servizio ratings e visualizza ogni valutazione con delle stelle rosse, da 1 a 5.

Di seguito è mostrata l'architettura end-to-end dell'applicazione.

Architettura con Istio
Architettura con Istio

Red Hat OpenShift Service Mesh si basa sulle sidecar di Envoy all'interno del pod dell'applicazione per fornire le funzionalità di Service Mesh all'applicazione. Puoi abilitare l'inserimento automatico di sidecar o gestirlo manualmente. L'inserimento automatico tramite l'annotazione è il metodo consigliato.

  1. Distribuisci l'applicazione Bookinfo nel progetto bookinfo applicando il file bookinfo.yaml sul cluster Red Hat OpenShift. Questo distribuisce tutte le applicazioni del microservizio incluse le versioni v1, v2 e v3 dell'applicazione reviews.

    oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/platform/kube/bookinfo.yaml
    

    Il file bookinfo.yaml è annotato sidecar.istio.io/inject: "true" per consentire l'iniezione automatica della sidecar Istio per Red Hat OpenShift Service Mesh. Pertanto, questi pod includeranno anche un sidecar Envoy e vengono avviati nel cluster.

    Un'installazione di Red Hat OpenShift Service Mesh differisce dalle installazioni della comunità Istio upstream per diversi aspetti. Fare riferimento a questo link per confrontare Service Mesh e Istio. Per impostazione predefinita, Istio inserisce il sidecar se hai etichettato il progetto istio-injection=enabled. Red Hat OpenShift lo gestisce in modo diverso e ti richiede di optare per l'inserimento automatico del sidecar in una distribuzione, quindi non ti è richiesto di etichettare il progetto. Questo evita di inserire un sidecar se non è desiderato (ad esempio, nei pod di build e distribuzione).

  2. Verifica che i pod siano attivi e in esecuzione.

    oc get pods
    

    Output di esempio:

    NAME                              READY     STATUS    RESTARTS   AGE
    details-v1-789c5f58f4-9twtw       2/2       Running   0          4m12s
    productpage-v1-856c8cc5d8-xcx2q   2/2       Running   0          4m11s
    ratings-v1-5786768978-tr8z9       2/2       Running   0          4m12s
    reviews-v1-5874566865-mxfgm       2/2       Running   0          4m12s
    reviews-v2-86865fc7d9-mf6t4       2/2       Running   0          4m12s
    reviews-v3-8d4cbbbbf-rfjcz        2/2       Running   0          4m12s
    

    Nota che ogni pod bookinfo ha 2 contenitori in esso. Uno è il contenitore bookinfo e l'altro è il sidecar proxy Envoy.

La tua applicazione bookinfo è in esecuzione ma non puoi accedervi perché il servizio non è ancora configurato a ricevere il traffico esterno. Nella prossima sezione, esporrai il servizio productpage per consentire il traffico in entrata.

Esponi l'applicazione con la rotta e il gateway Ingress Istio.

I componenti distribuiti sulla rete di servizi per impostazione predefinita non sono esposti al di fuori del cluster. Una risorsa gateway Ingress può essere creata per consentire le richieste esterne tramite il gateway Ingress Istio ai servizi di supporto.

  1. Configura la rotta predefinita bookinfo con il gateway Ingress Istio.
    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml
    
  2. Ottieni la ROTTA del gateway Ingress Istio.
    oc get routes -n istio-system istio-ingressgateway
    
  3. Salva l'indirizzo HOST che hai richiamato nel passo precedente, perché sarà utilizzato per accedere all'applicazione Bookinfo in parti successive dell'esercitazione. Crea una variabile di ambiente denominata $INGRESS_HOST con il tuo indirizzo HOST.
    export INGRESS_HOST=<HOST>
    
    Visita l'applicazione andando a http://$INGRESS_HOST/productpage in una nuova scheda. Se continui a premere Aggiorna, dovresti vedere versioni diverse della pagina in ordine casuale (v1 - nessuna stella, v2 - stelle nere, v3 - stelle rosse). Tenere aperta la scheda del browser per un secondo momento.

Osserva la telemetria del servizio: metriche e traccia

Le funzioni di metriche e traccia di Istio sono progettate per fornire un'ampia gamma di informazioni, o informazioni dettagliate, sull'integrità di tutti i servizi. Il ruolo di Istio come rete di servizi lo rende l'origine dati ideale per informazioni sull'osservabilità, in particolare in un ambiente di microservizi. Poiché le richieste passano attraverso più servizi, identificare i colli di bottiglia delle prestazioni diventa sempre più difficile utilizzando le tecniche di debug tradizionali. La traccia distribuita fornisce una vista olistica delle richieste che transitano tra più servizi, consentendo l'identificazione immediata di problemi di latenza. Con Istio, la traccia distribuita viene fornita per impostazione predefinita. Questo esporrà le informazioni di latenza, nuovi tentativi ed errori per ogni hop in una richiesta.

Visualizza le metriche con Grafana

Grafana ti consente di eseguire query, visualizzare, ricevere avvisi e comprendere le tue metriche indipendentemente da dove sono state archiviate.

  1. Nella console web Red Hat OpenShift on IBM Cloud,

    1. Sul pannello di sinistra, in Networking, fai clic su Routes
    2. Seleziona il progetto istio-system dalla barra superiore
    3. Fai clic sull'URL (ubicazione) accanto a grafana
    4. Accedere a Red Hat OpenShift on IBM Cloud e concedere i permessi richiesti per vedere la dashboard Grafana.
  2. Fai clic sul menu Dashboard nel pannello di navigazione a sinistra, seleziona la scheda Manage, quindi istio e Istio Service Dashboard.

  3. Seleziona productpage.bookinfo.svc.cluster.local nel menu a discesa Service.

  4. Andare nella scheda/finestra IBM Cloud Shell e generare un piccolo carico all'applicazione inviando traffico alla posizione dell'host Ingress impostata nell'ultima sezione.

    for i in {1..20}; do sleep 0.5; curl -I $INGRESS_HOST/productpage; done
    

Aprire ogni triangolo per visualizzare più elementi del dashboard. Scegli diversi servizi nel menu a discesa Servizio. Questo dashboard Grafana fornisce le metriche per ogni carico di lavoro. Esplora anche gli altri dashboard forniti.

Osserva la tua rete di servizi con Kiali

Kiali è un progetto open source installato come un componente aggiuntivo di Istio per visualizzare la tua rete di servizi. Kiali fornisce informazioni più approfondite su come i tuoi microservizi interagiscono tra loro e fornisce funzioni come gli interruttori di circuito e le frequenze di richiesta per i tuoi servizi.

  1. Dalla console web Red Hat OpenShift on IBM Cloud,
    1. Sul pannello di sinistra, in Networking fai clic su Routes
    2. Seleziona istio-system come tuo progetto dalla barra superiore
    3. Fare clic sull' URL (posizione) accanto a kiali e, se richiesto, fare clic su Accedi con OpenShift
  2. Fai clic sul grafico sul pannello di sinistra e seleziona gli spazi dei nomi bookinfo e istio-system dalla barra superiore per vedere un grafico dell'applicazione con le versioni visivo dei vari servizi nella tua rete Istio.
  3. Per visualizzare le frequenze di richiesta, fare clic su Visualizza e scegliere Frequenza traffico.
  4. In una diversa scheda/finestra, visita l'URL dell'applicazione BookInfo e aggiorna la pagina più volte per generare del carico o esegui lo script di carico nella precedente sezione.
  5. Ora, controlla il grafico Kiali per vedere le richieste al secondo.

Kiali dispone di diverse viste per aiutarti a visualizzare i tuoi servizi. Fai clic sulle varie schede per esplorare il grafico del servizio e le varie viste per i carichi di lavoro, le applicazioni e i servizi.

Esegui la gestione del traffico

Le regole di instradamento del traffico di Istio ti consentono di controllare facilmente il flusso di traffico e le chiamate API tra i servizi. Istio semplifica la configurazione delle proprietà al livello di servizio come gli interruttori di circuito, i timeout e i nuovi tentativi e rende facile configurare attività importanti come il test A/B, i rollout canary e i rollout preparati con suddivisioni di traffico basate sulle percentuali. Fornisce anche funzioni di ripristino dagli errori predefinite che ti aiutano a rendere la tua applicazione più resistente agli errori di servizi dipendenti o di rete.

Il modello di gestione del traffico di Istio si basa sui proxy (sidecar) Envoy distribuiti insieme ai tuoi servizi. Tutto il traffico che i tuoi servizi inviano e ricevono (il traffico del piano di dati) viene elaborato tramite proxy con Envoy, rendendo facile indirizzare e controllare il traffico intorno alla tua rete senza apportare alcuna modifica ai tuoi servizi.

Pilot traduce le regole di alto livello in configurazioni di basso livello e distribuisce questa configurazione alle istanze Envoy. Pilot utilizza tre tipi di risorse di configurazione per gestire il traffico all'interno della sua rete di servizi: Servizi virtuali, Regole di destinazione e Voci di servizio.

Verifica A/B con Istio

La verifica A/B è un metodo per eseguire test identici su due versioni del servizio separate per determinare quella con le prestazioni migliori. Per evitare che Istio esegua il funzionamento di instradamento predefinito tra il servizio originale e il modernizzato, definisci le seguenti regole:

  1. Immetti il seguente comando per creare delle regole di destinazione predefinite per i servizi Bookinfo.

    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all.yaml
    

    Una DestinationRule definisce i criteri che si applicano al traffico destinato a un servizio dopo l'instradamento. Queste regole specificano la configurazione per il bilanciamento del carico, la dimensione del pool di connessione dal sidecar e le impostazioni di rilevamento outlier per rilevare e rimuovere gli host non integri dal pool di bilanciamento del carico. Tutti gli host e le serie secondarie (subset) a cui viene fatto riferimento in una regola VirtualService devono essere definiti in una DestinationRule corrispondente.

  2. Una VirtualService definisce una serie di regole di instradamento del traffico da applicare quando viene trattato un host. Ogni regola di instradamento definisce i criteri di corrispondenza per il traffico di uno specifico protocollo. Se il traffico ha una corrispondenza, allora viene inviato a un servizio di destinazione denominato (o una serie secondaria/versione di esso) definito nel registro. Eseguire il comando seguente per inviare tutto il traffico delle recensioni a v1:

    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-all-v1.yaml
    

    La VirtualService definisce una regola che acquisisce tutto il traffico HTTP in entrata nel servizio reviews e instrada il 100% del traffico ai pod del servizio con l'etichetta "version: v1". Una serie secondaria o una versione di una destinazione della rotta viene identificata con un riferimento a una serie secondaria del servizio denominata che deve essere dichiarata in una DestinationRule corrispondente.

  3. Visualizzare l'applicazione bookinfo nella scheda del browser. Si dovrebbe ottenere solo la v1 dell'applicazione BookInfo, ad esempio, nessuna stella per le valutazioni.

  4. Per abilitare la rete di servizi Istio per la verifica A/B sulla nuova versione del servizio, modifica la regola VirtualService originale ed invia solo il traffico Firefox alla v2. È possibile cambiare il sito user-agent con qualsiasi altro browser installato sul computer:

    cat <<EOF | oc replace -f -
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
      - reviews
      http:
      - match:
        - headers:
            user-agent:
              regex: '.*Firefox.*'
        route:
        - destination:
            host: reviews
            subset: v2
      - route:
        - destination:
            host: reviews
            subset: v3
    EOF
    

    Nelle regole di Istio VirtualService, può esistere una sola regola per ogni servizio e quindi, quando si definiscono più blocchi HTTPRoute, conta l'ordine in cui sono definiti nello yaml. Di conseguenza, la regola VirtualService originale viene modificata invece di crearne una nuova. Con la regola modificata, le richieste in entrata originate dai browser Firefox andranno alla versione v2 (stelle nere) di bookinfo. Tutte le altre richieste rientrano nel blocco successivo, che instrada tutto il traffico alla versione v3 (stelle rosse) di bookinfo.

Distribuzione canary

Nelle distribuzioni canary, le versioni più recenti dei servizi vengono distribuite in modo incrementale agli utenti per ridurre il rischio e l'impatto che vengano introdotti nuovi bug dalle versioni più recenti. Per iniziare ad instradare in modo incrementale il traffico alle versioni più recenti del servizio bookinfo, modifica la regola VirtualService originale:

  1. Immetti il seguente comando per inviare l'80% del traffico alla v1.

    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-80-20.yaml
    

    Nella regola modificata, il traffico instradato viene suddiviso tra due diverse serie secondarie del microservizio reviews. In questo modo, il traffico alla versione 2 modernizzata di reviews viene controllato su base percentuale per limitare l'impatto di tutti i bug imprevisti. Questa regola può essere modificata nel tempo finché alla fine tutto il traffico viene indirizzato alla versione più recente del servizio.

  2. Visualizzare nuovamente l'applicazione bookinfo nella scheda del browser. Assicurarsi di aver effettuato un hard refresh (command + Shift + R su Mac o Ctrl + F5 su Windows) per rimuovere la cache del browser. Dovresti notare che l'applicazione bookinfo passa dalla V1 o V2 al peso specificato.

  3. Per instradare tutto il traffico alla v3 di reviews:

    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-v3.yaml
    

Proteggi i tuoi servizi

Istio può proteggere la comunicazione tra i microservizi senza richiedere modifiche al codice dell'applicazione. La protezione viene fornita autenticando e crittografando i percorsi di comunicazione all'interno del cluster. Questo sta diventando un requisito comune di sicurezza e conformità. Delegando la protezione della comunicazione a Istio (al contrario di implementare TLS in ogni microservizio), garantisci che la tua applicazione sarà distribuita con politiche di sicurezza gestibili e coerenti.

  1. Per configurare mTLS, devi modificare le tue precedenti regole di destinazione all'uso di ISTIO_MUTUAL.
    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all-mtls.yaml
    
  2. Invia ulteriore traffico alla tua applicazione. Dovrebbe continuare a funzionare tutto come previsto.
  3. Avvia nuovamente Kiali a vai a Graph.
  4. Seleziona bookinfo dalla barra superiore Namespace.
  5. In Display, seleziona Security. Dovresti vedere l'icona lock su tutte le frecce (traffico).
  6. Per confermare che il tuo traffico è protetto, fai clic sulla freccia da productpage a v1 e dovresti visualizzare mTLS Enabled con un'icona lock sul pannello di destra.

Abilita SSL per il traffico in entrata nel tuo cluster (HTTPS)

In questa sezione, creerai una rotta sicura al gateway Ingress con la terminazione Edge tramite il certificato predefinito fornito da Red Hat OpenShift on IBM Cloud. Con una rotta edge, il controller Ingress termina la crittografia TLS prima di inoltrare il traffico la pod istio-ingressgateway.

  1. Avvia la console Red Hat OpenShift on IBM Cloud
  2. In Networking e poi in Routes.
  3. Scegli il progetto istio-system dalla barra superiore e poi fai clic su Create Route
    1. Nome: istio-ingressgateway-secure
    2. Servizio: istio-ingressgateway
    3. Porta di destinazione 80->8080(TCP)
    4. Verifica Secure Route
    5. Terminazione TLS: Edge
    6. Traffico non sicuro: None
  4. Fai clic su Crea.
  5. Visita il nuovo URL HTTPS nella sezione Location della rotta istio-ingressgateway-secure. Ricorda di aggiungere /productpage alla fine dell'URL.

Rimuovi le risorse

È possibile rimuovere gradualmente le singole risorse o ignorare questi passi ed eliminare direttamente l'intero cluster.

Elimina il progetto dell'applicazione

  • Per eliminare il progetto bookinfo, immetti il seguente comando
    oc delete project bookinfo
    

Rimozione di ServiceMeshControlPlane dalla CLI

  1. Immetti questo comando per richiamare il nome del ServiceMeshControlPlane installato.
    oc get servicemeshcontrolplanes -n istio-system
    
  2. Sostituire <NAME_OF_CUSTOM_RESOURCE> con il nome del comando precedente ed eseguire questo comando per rimuovere la risorsa personalizzata,
    oc delete servicemeshcontrolplanes -n istio-system <NAME_OF_CUSTOM_RESOURCE>
    
    La risorsa ServiceMeshMemberRoll viene automaticamente eliminata quando elimini la risorsa ServiceMeshControlPlane a cui è associata.

Rimuovi gli operatori

  1. Vai alla pagina OperatorsInstalled Operators della console web.
  2. Sul lato destro della pagina Dettagli operatore, selezionare Disinstallare l'operatore dal menu a discesa Azioni di Red Hat OpenShift Rete di servizio Operatore.
  3. Fare clic su Disinstalla nel prompt.
  4. Ripeti i passi 2 e 3 per tutti gli operatori nell'elenco.

Elimina il cluster

Elimina il cluster per eliminare tutto ciò che contiene in una sola operazione. Questa azione non può essere annullata.

  1. Vai alla pagina OpenShift clusters.
  2. Fare clic sul menu delle azioni accanto a <your-initials>-myopenshiftcluster e selezionare Elimina.
  3. Seleziona Delete the persistent storage used by the cluster ed immetti il nome del cluster per confermare.
  4. Fai clic su Delete

Contenuto correlato