{"id":54208,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/seriya-postov-po-istio-service-mesh"},"modified":"2020-02-18T14:02:12","modified_gmt":"2020-02-18T11:02:12","slug":"seriya-postov-po-istio-service-mesh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"Serie di post su Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Iniziamo una serie di post in cui dimostreremo alcune delle molte possibilit\u00e0 della rete di servizio Istio Service Mesh in combinazione con Red Hat OpenShift e Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nParte prima, di oggi: <\/p>\n<ul>\n<li>Spiegheremo il concetto di contenitori sidecar di Kubernetes e formuliamo il tema di questa serie di post: <b>\u00abnon devi cambiare nulla nel tuo codice\u00bb<\/b>.<\/li>\n<li>Introduciamo il concetto fondamentale di Istio: le regole di routing. Tutte le altre funzionalit\u00e0 di Istio si basano su di esse, poich\u00e9 le regole consentono di indirizzare il traffico verso i microservizi utilizzando file YAML esterni al codice dei servizi. Consideriamo anche lo schema di distribuzione Canary Deployment. Come bonus per il nuovo anno \u2014 10 lezioni interattive su Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nParte seconda, che uscir\u00e0 presto, ti parler\u00e0 di: <\/p>\n<ul>\n<li>Come Istio implementa il Pool Ejection in combinazione con il Circuit Breaker e dimostrer\u00e0 come Istio consente di rimuovere dai meccanismi di bilanciamento un pod non funzionante o che funziona male.<\/li>\n<li>Inoltre, esploreremo il tema del Circuit Breaker dal primo post per vedere come Istio pu\u00f2 essere integrato qui. Mostreremo come indirizzare il traffico e gestire gli errori di rete senza alcuna modifica nel codice dei servizi usando file di configurazione YAML e comandi da terminale.<\/li>\n<\/ul>\n<p>\nParte terza: <\/p>\n<ul>\n<li>Racconteremo di tracciamento e monitoraggio, che sono gi\u00e0 integrati o facilmente aggiungibili in Istio. Mostreremo come utilizzare strumenti come Prometheus, Jaeger e Grafana in combinazione con l'auto-scalabilit\u00e0 di OpenShift per gestire senza sforzo un'architettura a microservizi.<\/li>\n<li>Passiamo dal monitoraggio e dalla gestione degli errori a introdurli nel sistema in modo intenzionale. In altre parole, impariamo a fare fault injection senza modificare il codice sorgente, il che \u00e8 molto importante per il testing \u2014 poich\u00e9 modificare il codice stesso comporta il rischio di introdurre ulteriori errori.<\/li>\n<\/ul>\n<p>\nInfine, nell'ultimo post su Istio Service Mesh:<\/p>\n<ul>\n<li>Passeremo al Lato Oscuro. In modo pi\u00f9 preciso, impareremo a usare lo schema di Dark Launch, quando il codice viene distribuito e testato direttamente sui dati di produzione, ma non influisce sul funzionamento del sistema. La capacit\u00e0 di Istio di separare il traffico \u00e8 molto utile in questo caso. E la possibilit\u00e0 di eseguire test su dati di produzione in tempo reale, senza influenzare il funzionamento del sistema in produzione, \u00e8 il modo pi\u00f9 convincente per verificare.<\/li>\n<li>Partendo dal Dark Launch, mostreremo come usare il modello Canary Deployment per ridurre i rischi e semplificare l'implementazione di nuovo codice. Il Canary Deployment non \u00e8 una novit\u00e0, ma Istio consente di implementare questo schema semplicemente con file YAML non complicati.<\/li>\n<li>In conclusione, vedremo come utilizzare Istio Egress per dare accesso ai servizi a coloro che si trovano al di fuori dei vostri cluster, per sfruttare le capacit\u00e0 di Istio nel lavorare con Internet.<\/li>\n<\/ul>\n<p>\nEcco, cominciamo...<\/p>\n<p><b>Strumenti di monitoraggio e gestione di Istio - tutto il necessario per coordinare i microservizi in una rete di servizi <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Cos'\u00e8 la rete di servizi Istio<\/h3>\n<p>\nLa rete di servizi fornisce a un gruppo di servizi funzionalit\u00e0 come il monitoraggio del traffico, il controllo degli accessi, la scoperta, la sicurezza, la resilienza e altre cose utili. Istio consente di farlo tutto senza apportare alcuna modifica al codice stesso dei servizi. Qual \u00e8 il segreto della magia? Istio attacca a ciascun servizio il proprio proxy sotto forma di container sidecar, dopodich\u00e9 tutto il traffico verso quel servizio passa attraverso il proxy, che, seguendo le politiche stabilite, decide come, quando e se questo traffico deve effettivamente raggiungere il servizio. Istio consente anche di implementare tecniche avanzate di DevOps, come i canary deployments, i circuit breakers, l'injection di errori e molte altre.<\/p>\n<h3>Come Istio lavora con i container e Kubernetes<\/h3>\n<p>\nLa rete di servizi Istio \u00e8 una implementazione sidecar di tutto ci\u00f2 che \u00e8 necessario per creare e gestire microservizi: monitoraggio, tracciamento, circuit breakers, routing, bilanciamento del carico, injection di errori, retry, timeouts, mirroring, controllo degli accessi, limitazione della velocit\u00e0 e molto altro. Anche se oggi ci sono molte librerie per implementare queste funzionalit\u00e0 direttamente nel codice, con Istio puoi ottenere tutto questo senza dover cambiare il tuo codice.<\/p>\n<p>Secondo il modello sidecar, Istio viene eseguito in un container Linux, che si trova nello stesso <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod con il servizio controllato e inietta (inject) ed estrae (extract) funzionalit\u00e0 e informazioni secondo la configurazione stabilita. Sottolineiamo, questa \u00e8 la vostra configurazione, e vive al di fuori del vostro codice. Pertanto, il codice diventa molto pi\u00f9 semplice e breve.<\/p>\n<p>\u00c8 importante notare che l'aspetto operativo dei microservizi non \u00e8 affatto legato al codice stesso, il che significa che la loro gestione pu\u00f2 essere tranquillamente affidata agli specialisti IT. Infatti, perch\u00e9 uno sviluppatore dovrebbe occuparsi di circuit breaker e fault injection? Reagire, s\u00ec, ma gestirli e crearli? Se si elimina tutto questo dal codice, i programmatori possono concentrarsi interamente sulle funzionalit\u00e0 applicative. Inoltre, il codice stesso diventa pi\u00f9 corto e semplice.<\/p>\n<h3>Mesh di servizi<\/h3>\n<p>\nIstio, che implementa funzioni di gestione dei microservizi al di fuori del loro codice, \u00e8 proprio il concetto di service mesh. In altre parole, \u00e8 un gruppo coordinato di uno o pi\u00f9 binari che formano una rete di funzioni di rete.<\/p>\n<h3>Come funziona Istio con i microservizi<\/h3>\n<p>\nEcco come appare il funzionamento dei contenitori sidecar in relazione a <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> dall'alto: avviate un'istanza di Minishift, create un progetto per Istio (chiamiamolo \"istio-system\"), installate e avviate tutti i componenti collegati a Istio. Poi, man mano che create progetti e pod, aggiungete le informazioni di configurazione nei vostri deployment, e i vostri pod iniziano a utilizzare Istio. In modo semplificato, il diagramma appare cos\u00ec:<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Ora potete modificare le impostazioni di Istio per, ad esempio, organizzare fault injection, supporto <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Distribuzione Canary<\/a><\/noindex> o altre funzionalit\u00e0 di Istio \u2013 e tutto questo senza toccare il codice delle applicazioni stesse. Supponiamo che vogliate reindirizzare tutto il traffico web dai clienti del vostro maggiore cliente (Foo Corporation) a una nuova versione del sito. Per questo basta creare una regola di routing in Istio che cercher\u00e0 @foocorporation.com nell'identificatore dell'utente e effettuer\u00e0 il pertinente reindirizzamento. Per tutti gli altri utenti, nulla cambier\u00e0. E nel frattempo, potrete testare tranquillamente la nuova versione del sito. E notate che per questo non c'\u00e8 bisogno di coinvolgere gli sviluppatori.<\/p>\n<h3>E coster\u00e0 molto?<\/h3>\n<p>\nAffatto. Istio funziona piuttosto rapidamente, \u00e8 scritto in <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> e crea un sovraccarico molto ridotto. Inoltre, la possibile perdita di prestazioni online \u00e8 compensata dall'aumento della produttivit\u00e0 degli sviluppatori. Almeno in teoria: non dimenticate che il tempo degli sviluppatori \u00e8 costoso. Per quanto riguarda i costi del software, Istio \u00e8 un software open source, quindi pu\u00f2 essere ottenuto e utilizzato gratuitamente.<\/p>\n<h3>Apprendi da solo<\/h3>\n<p>\nIl team Red Hat Developer Experience ha sviluppato una guida pratica approfondita <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">guida<\/a><\/noindex> su Istio (in inglese). Funziona su Linux, MacOS e Windows, e il codice \u00e8 disponibile in versioni Java e Node.js.<\/p>\n<h3>10 lezioni interattive su Istio<\/h3>\n<p><\/p>\n<h4>Blocco 1 \u2014 Per principianti<\/h4>\n<p>\n<b>Introduzione a Istio<\/b><br \/>\n30 minuti <br \/>\nCi familiarizziamo con il Service Mesh e impariamo a installare Istio nel cluster Kubernetes di OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Inizia<\/a><\/noindex> <\/p>\n<p><b>Distribuzione di microservizi in Istio<\/b><br \/>\n30 minuti<br \/>\nUtilizziamo Istio per distribuire tre microservizi con Spring Boot e Vert.x.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Inizia<\/a><\/noindex> <\/p>\n<h4>Blocco 2 \u2013 livello intermedio <\/h4>\n<p>\n<b>Monitoraggio e tracciamento in Istio<\/b><br \/>\n60 minuti <br \/>\nStudiamo gli strumenti di monitoraggio integrati di Istio, le metriche configurabili e OpenTracing tramite Prometheus e Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Inizia<\/a><\/noindex> <\/p>\n<p><b>Routing di base in Istio<\/b><br \/>\n60 minuti <br \/>\nImpariamo a gestire il routing in Istio utilizzando semplici regole.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Inizia <\/a><\/noindex><\/p>\n<p><b>Regole di routing avanzate<\/b><br \/>\n60 minuti <br \/>\nAcquisiamo familiarit\u00e0 con il routing intelligente in Istio, la gestione degli accessi, il bilanciamento del carico e il throttling.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Inizia<\/a><\/noindex> <\/p>\n<h4>Blocco 3 \u2013 utente esperto<\/h4>\n<p>\n<b>Injection di fault in Istio<\/b><br \/>\n60 minuti <br \/>\nEsploriamo gli scenari di gestione dei guasti in applicazioni distribuite, creando errori HTTP e ritardi di rete, impariamo ad applicare il chaos engineering per ripristinare l'ambiente.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Inizia<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker in Istio<\/b><br \/>\n30 minuti <br \/>\nInstalliamo Siege per i test di stress sui siti e impariamo a garantire la resilienza del backend tramite tentativi, circuit breaker e pool ejection.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Inizia<\/a><\/noindex> <\/p>\n<p><b>Egress e Istio<\/b><br \/>\n10 minuti <br \/>\nUtilizziamo le rotte Egress per creare regole di interazione tra i servizi interni e le API esterne e i servizi.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Inizia<\/a><\/noindex> <\/p>\n<p><b>Istio e Kiali<\/b><br \/>\n15 minuti <br \/>\nImpariamo a utilizzare Kiali per ottenere una visione generale del service mesh e studiare i flussi di richieste e dati.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Inizia<\/a><\/noindex> <\/p>\n<p>Mutual TLS in Istio<br \/>\n15 minuti <br \/>\nCreiamo un Istio Gateway e un VirtualService, quindi esaminiamo in dettaglio mutual TLS (mTLS) e le sue configurazioni.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Inizia<\/a><\/noindex> <\/p>\n<h4>Blocco 3.1 \u2014 Approfondimenti: Istio Service Mesh per microservizi<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDi cosa parla il libro:<\/p>\n<ul>\n<li>Che cos'\u00e8 un service mesh.<\/li>\n<li>Il sistema Istio e il suo ruolo nell'architettura a microservizi.<\/li>\n<li>Utilizzo di Istio per risolvere le seguenti sfide:\n<ul>\n<li>Resilienza;<\/li>\n<li>Routing;<\/li>\n<li>Chaos testing;<\/li>\n<li>Sicurezza;<\/li>\n<li>Raccolta della telemetria tramite tracciamento, metriche e Grafana.<\/li>\n<\/ul>\n<p>\n <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/books\/introducing-istio-service-mesh-microservices\/\">Scarica il libro<\/a><\/noindex><\/p>\n<h3>Serie di articoli sulle service mesh e Istio<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/13\/istio-route-rules-service-requests\/\">Regole di instradamento di Istio: indirizziamo le richieste dei servizi dove necessario<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Circuit Breakers in Istio: gestiamo l'Esecuzione del Pool<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/27\/istio-circuit-breaker-when-failure-is-an-option\/\">Circuit Breaker in Istio: quando il fallimento \u00e8 un'opzione<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Tracciamento e monitoraggio in Istio: dove stiamo andando e con quale velocit\u00e0<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Chaos engineering in Istio: era cos\u00ec che era stato previsto<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Dark Launch in Istio: servizi segreti<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment in Istio: semplifichiamo il rollout<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/05\/01\/istio-egress-exit-through-the-gift-shop\/\">Istio Egress: uscita attraverso il negozio di souvenir<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Prova tu stesso<\/h3>\n<p>\nQuesta serie di post non ha l'obiettivo di fornire un'immersione profonda nel mondo di Istio. Vogliamo solo introdurti al concetto e, forse, ispirarti a provare Istio da solo. Puoi farlo completamente gratis, e Red Hat fornisce tutti gli strumenti necessari per iniziare a padroneggiare OpenShift, Kubernetes, i container Linux e Istio, ossia: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.com\/products\/container-platform\/trial\/\">Red Hat Developer OpenShift Container Platform<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">la nostra guida su Istio<\/a><\/noindex> e altre risorse sul nostro <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">mini-sito di Service Mesh<\/a><\/noindex>. Non rimandare, inizia oggi stesso!<\/p>\n<h3>Regole di instradamento di Istio: indirizziamo le richieste dei servizi dove necessario<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> gestisce perfettamente le richieste verso <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservizi<\/a><\/noindex> istradati verso i pod giusti. Questa \u00e8 una delle ragioni per cui Kubernetes esiste: instradamento e bilanciamento del carico. Ma cosa fare se hai bisogno di un instradamento pi\u00f9 fine e sofisticato? Ad esempio, per utilizzare simultaneamente due versioni di un microservizio. Come possono aiutarti le regole di instradamento Istio Route Rules?<\/p>\n<p>Le regole di instradamento sono le regole che definiscono la scelta del percorso. Indipendentemente dal livello di complessit\u00e0 del sistema, il principio generale di funzionamento di queste regole rimane semplice: le richieste vengono instradate sulla base di parametri specifici e dei valori degli header HTTP. <br \/>\nVediamo alcuni esempi: <\/p>\n<h3>Kubernetes per impostazione predefinita: banale \"50 a 50\"<\/h3>\n<p>\nNel nostro esempio mostreremo come utilizzare contemporaneamente su OpenShift due versioni di un microservizio, che chiameremo v1 e v2. Ogni versione viene eseguita nel proprio pod Kubernetes, e per impostazione predefinita qui funziona un'instradamento bilanciato e ciclico (evenly balanced round robin routing). Ogni pod riceve una quota di richieste in base al numero dei suoi istanze di microservizio, in altre parole, repliche. Istio consente di modificare questo bilanciamento manualmente.<\/p>\n<p>Mettiamo caso di aver distribuito su OpenShift due versioni del nostro servizio di raccomandazione, recommendation-v1 e recommendation-v2.<br \/>\nNella fig. 1 si vede che, quando ogni servizio \u00e8 rappresentato in un solo esemplare, le richieste si alternano uniformemente tra di loro: 1-2-1-2-\u2026 Questo \u00e8 esattamente come la routing di Kubernetes funziona per impostazione predefinita:<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Distribuzione ponderata tra le versioni<\/h3>\n<p>\nNella figura 2 \u00e8 mostrato cosa accade se si aumenta il numero di repliche del servizio v2 da una a due (questo si realizza con il comando oc scale \u2014replicas=2 deployment\/recommendation-v2). Come possiamo vedere, le richieste tra v1 e v2 ora si dividono in un rapporto di \u00abuno a tre\u00bb: 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignorare la versione con Istio<\/h3>\n<p>\nIstio consente di modificare facilmente la distribuzione delle richieste come desiderato. Ad esempio, per inviare tutto il traffico solo a recommendation-v1 con il seguente file yaml di Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Qui bisogna prestare attenzione a questo: i pod vengono selezionati in base alle etichette. Nel nostro esempio viene utilizzata l'etichetta v1. Il parametro \"weight: 100\" significa che il 100% del traffico sar\u00e0 instradato verso tutti i pod del servizio con etichetta v1.<\/p>\n<h3>Distribuzione diretta tra le versioni (Canary Deployment)<\/h3>\n<p>\nIn seguito, utilizzando il parametro weight, \u00e8 possibile instradare il traffico verso entrambi i pod, ignorando il numero di esemplari di microservizi in esecuzione in ciascuno di essi. Ad esempio, qui stiamo instradando direttamente il 90% del traffico su v1 e il 10% su v2:<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Routing separato per gli utenti mobili<\/h3>\n<p>\nIn conclusione, mostreremo come forzare il routing del traffico degli utenti mobili verso il servizio v2, mentre tutti gli altri verranno instradati verso v1. Per fare ci\u00f2, analizziamo il valore dell'user-agent nell'intestazione della richiesta tramite espressioni regolari:<\/p>\n<p><img decoding=\"async\" alt=\"Serie di post su Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Adesso \u00e8 il tuo turno<\/h3>\n<p>\nUn esempio con espressioni regolari per analizzare le intestazioni dovrebbe motivarti a cercare le tue varianti di applicazione delle regole di routing di Istio. Anche perch\u00e9 qui si aprono possibilit\u00e0 abbastanza ampie, poich\u00e9 i valori delle intestazioni possono essere costruiti nel codice sorgente delle applicazioni.<\/p>\n<h3>E ricorda, Ops, non Dev<\/h3>\n<p>\nTutto ci\u00f2 che abbiamo mostrato negli esempi precedenti viene fatto senza alcuna modifica nel codice sorgente, a meno che non sia necessario generare intestazioni di richiesta speciali. Istio sar\u00e0 utile sia per gli sviluppatori, che ad esempio potranno applicarlo nella fase di testing, sia per gli specialisti nella gestione dei sistemi IT, ai quali sar\u00e0 di grande aiuto in produzione.<\/p>\n<p>Quindi ripetiamo il leitmotiv di questa serie di post: <b>non devi cambiare nulla nel tuo codice<\/b>. Non \u00e8 necessario raccogliere nuove immagini o avviare nuovi contenitori. Tutto questo viene realizzato al di fuori del codice.<\/p>\n<h3>Attiva l'immaginazione<\/h3>\n<p>\nImmagina solo quali prospettive apre l'analisi dei titoli con le espressioni regolari. Vuoi reindirizzare il tuo cliente pi\u00f9 grande a una versione speciale dei tuoi <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservizi<\/a><\/noindex>? \u041b\u0435\u0433\u043a\u043e! \u041d\u0443\u0436\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 Chrome? \u041d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<h3>Prova tu stesso<\/h3>\n<p>\nLeggere di Istio, Kubernetes e OpenShift \u00e8 una cosa, ma perch\u00e9 non provare tutto con le proprie mani? Il team <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> ha preparato una guida dettagliata (in inglese) che ti aiuter\u00e0 a padroneggiare queste tecnologie nel minor tempo possibile. La guida \u00e8 anche 100% open source, quindi \u00e8 disponibile pubblicamente. Il file funziona su macOS, Linux e Windows, e il codice sorgente \u00e8 disponibile in versioni Java e node.js (presto saranno disponibili versioni in altre lingue). Basta aprire nel proprio browser il corrispondente repository git <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>Nel prossimo post: affrontiamo i problemi con eleganza<\/h3>\n<p>\nOggi hai visto di cosa sono capaci le regole di instradamento di Istio. E ora immagina tutto lo stesso, ma applicato alla gestione degli errori. Questo \u00e8 ci\u00f2 di cui parleremo nel prossimo post.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/481182\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f, \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f: \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Kubernetes \u0438 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u043c\u043e\u0442\u0438\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432: \u00ab\u0432\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0432\u0435\u0449\u044c Istio \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430 \u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54208","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Serie di post su Istio Service Mesh | ProHoster","description":"Iniziamo una serie di post in cui dimostreremo alcune delle molte possibilit\u00e0 della rete di servizio Istio Service Mesh in combinazione con Red Hat OpenShift e Kubernetes.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster","og:description":"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:27:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:32","updated":"2026-01-24 10:27:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}