{"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 mostreremo alcune delle numerose funzionalit\u00e0 della rete di servizi 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 uno, oggi: <\/p>\n<ul>\n<li>Spiegheremo il concetto di container sidecar di Kubernetes e formuleremo il tema principale di questa serie di post: <b>\u00abnon dovete modificare il vostro codice\u00bb<\/b>.<\/li>\n<li>Introdurremo il concetto fondamentale di Istio: le regole di instradamento. Tutte le altre funzionalit\u00e0 di Istio si basano su di esse, poich\u00e9 le regole consentono di dirigere il traffico verso i microservizi, utilizzando file YAML esterni al codice dei servizi. Discuteremo anche dello schema di implementazione Canary Deployment. Bonus di Capodanno: 10 corsi interattivi su Istio<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLa parte due, che uscir\u00e0 presto, vi racconter\u00e0: <\/p>\n<ul>\n<li>Come Istio implementa il Pool Ejection in combinazione con il Circuit Breaker e mostrer\u00e0 come Istio consente di rimuovere dalla scheda di bilanciamento un pod non funzionante o che lavora male.<\/li>\n<li>Inoltre, esamineremo il tema del Circuit Breaker del primo post per vedere come Istio possa essere coinvolto. Mostreremo come instradare il traffico e gestire gli errori di rete senza alcuna modifica ai codici dei servizi, utilizzando file di configurazione YAML e comandi da terminale.<\/li>\n<\/ul>\n<p>\nParte tre: <\/p>\n<ul>\n<li>Parleremo di tracciamento e monitoraggio, che sono gi\u00e0 integrati o facilmente aggiungibili a Istio. Mostreremo come utilizzare strumenti come Prometheus, Jaeger e Grafana in combinazione con la scalabilit\u00e0 di OpenShift per gestire senza sforzo l'architettura a microservizi.<\/li>\n<li>Passeremo dal monitoraggio e dalla gestione degli errori all'introdurre errori intenzionalmente nel sistema. In altre parole, impareremo a fare fault injection senza modificare il codice sorgente, il che \u00e8 molto importante dal punto di vista del testing\u2014poich\u00e9 se si modifica il codice, si rischia di introdurre ulteriori errori.<\/li>\n<\/ul>\n<p>\nInfine, nel post finale su Istio Service Mesh:<\/p>\n<ul>\n<li>Passeremo al Lato Scuro. Pi\u00f9 precisamente, impareremo a utilizzare lo schema Dark Launch, quando il codice viene implementato e testato direttamente sui dati di produzione, senza influenzare il funzionamento del sistema. Qui entra in gioco la capacit\u00e0 di Istio di separare il traffico. La possibilit\u00e0 di eseguire test su dati di produzione dal vivo, senza influire sul funzionamento del sistema di produzione, \u00e8 il modo pi\u00f9 convincente di verifica.<\/li>\n<li>A partire dal Dark Launch, mostreremo come utilizzare il modello Canary Deployment per ridurre i rischi e semplificare l'inserimento di nuovo codice. La Canary Deployment in s\u00e9 non \u00e8 certo una novit\u00e0, ma Istio consente di implementare questo schema semplicemente tramite file YAML non complessi.<\/li>\n<li>Infine, mostreremo come utilizzare Istio Egress per consentire l'accesso ai servizi a coloro che si trovano al di fuori dei vostri cluster, per sfruttare le funzionalit\u00e0 di Istio nel lavoro con Internet.<\/li>\n<\/ul>\n<p>\nQuindi, partiamo...<\/p>\n<p><b>Strumenti di monitoraggio e gestione di Istio: tutto il necessario per coordinare i microservizi nella rete di servizi <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Che cos'\u00e8 la rete di servizi Istio<\/h3>\n<p>\nLa rete di servizi implementa per un gruppo di servizi funzioni come monitoraggio del traffico, controllo degli accessi, scoperta, sicurezza, tolleranza ai guasti e altre utilit\u00e0. Istio consente di fare tutto questo senza alcuna modifica al codice dei servizi stessi. Qual \u00e8 il segreto di questo incanto? Istio collega un proprio proxy a ciascun servizio sotto forma di container sidecar (sidecar \u00e8 un carrello per motociclette), quindi tutto il traffico verso quel servizio passa attraverso il proxy, che decide, in base alle politiche impostate, come, quando e se quel traffico deve raggiungere il servizio. Istio consente anche di implementare tecniche avanzate di DevOps, come le canary deployments, i circuit breakers, il fault injection e molte altre.<\/p>\n<h3>Come Istio lavora con i container e Kubernetes<\/h3>\n<p>\nLa rete di servizi Istio \u00e8 un'implementazione sidecar di tutto ci\u00f2 che serve per costruire e gestire microservizi: monitoraggio, tracciamento, circuit breakers, instradamento, bilanciamento del carico, fault injection, ripetizioni, timeout, mirroring, controllo degli accessi, limitazione della velocit\u00e0 e molto altro. E sebbene oggi esistano molte librerie per implementare queste funzionalit\u00e0 direttamente nel codice, Istio vi consente di ottenere tutto ci\u00f2 senza modificare il vostro 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 del servizio controllato e inietta (inject) ed estrae (extract) funzionalit\u00e0 e informazioni in base alla configurazione specificata. Sottolineiamo, si tratta della vostra configurazione personale, e vive al di fuori del vostro codice. Pertanto, il codice diventa molto pi\u00f9 semplice e conciso.<\/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. In effetti, perch\u00e9 uno sviluppatore dovrebbe occuparsi di circuit breaker e fault injection? Rispondere s\u00ec, ma gestirli e crearli? Eliminando tutto ci\u00f2 dal codice, i programmatori potranno concentrarsi completamente sulle funzionalit\u00e0 applicative. Inoltre, il codice stesso diventer\u00e0 pi\u00f9 corto e semplice.<\/p>\n<h3>Service Mesh<\/h3>\n<p>\nIstio, che implementa funzioni di gestione dei microservizi al di fuori del loro codice, \u00e8 appunto il concetto di Service Mesh. In altre parole, \u00e8 un insieme coordinato di uno o pi\u00f9 binari che formano una rete di funzioni di rete.<\/p>\n<h3>Come Istio lavora con i microservizi<\/h3>\n<p>\nEcco come funzionano i container 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> visto dall'alto: avviate un'istanza di Minishift, create un progetto per Istio (chiamiamolo \"istio-system\"), installate e avviate tutti i componenti associati a Istio. Poi, mentre create progetti e pod, aggiungete informazioni di configurazione ai vostri deployment, e i vostri pod inizieranno 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 \u00e8 possibile modificare le impostazioni di Istio per organizzare, ad esempio, fault injection, supporto <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Deployment Canary<\/a><\/noindex> o altre funzionalit\u00e0 di Istio, il tutto senza toccare il codice delle applicazioni stesse. Supponiamo che vogliate reindirizzare tutto il traffico web degli utenti del vostro cliente pi\u00f9 grande (Foo Corporation) a una nuova versione del sito. \u00c8 sufficiente creare una regola di routing di Istio che cerchi @foocorporation.com nell'identificatore dell'utente e compia il relativo reindirizzamento. Per tutti gli altri utenti, non cambier\u00e0 nulla. Nel frattempo, potrete testare tranquillamente la nuova versione del sito. E notate che per questo non \u00e8 necessario coinvolgere gli sviluppatori.<\/p>\n<h3>E coster\u00e0 molto?<\/h3>\n<p>\nAssolutamente no. Istio funziona abbastanza velocemente, \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 ha un costo. Per quanto riguarda i costi software, Istio \u00e8 un software open source, quindi pu\u00f2 essere ottenuto e utilizzato gratuitamente.<\/p>\n<h3>Imparate da soli<\/h3>\n<p>\nIl team Red Hat Developer Experience ha sviluppato una pratica approfondita <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">la guida<\/a><\/noindex> su Istio (in inglese). Funziona su Linux, MacOS e Windows, e il codice \u00e8 disponibile in versioni per Java e Node.js.<\/p>\n<h3>10 lezioni interattive su Istio<\/h3>\n<p><\/p>\n<h4>Modulo 1 \u2014 Iniziale<\/h4>\n<p>\n<b>Introduzione a Istio<\/b><br \/>\n30 minuti <br \/>\nScopriamo il Service Mesh, impariamo a installare Istio in un cluster Kubernetes OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Iniziare<\/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\/\">Iniziare<\/a><\/noindex> <\/p>\n<h4>Modulo 2 \u2013 Intermedio <\/h4>\n<p>\n<b>Monitoraggio e tracciamento in Istio<\/b><br \/>\n60 minuti <br \/>\nEsploriamo gli strumenti di monitoraggio integrati di Istio, metriche configurabili, nonch\u00e9 OpenTracing tramite Prometheus e Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Iniziare<\/a><\/noindex> <\/p>\n<p><b>Routing semplice in Istio<\/b><br \/>\n60 minuti <br \/>\nImpariamo a gestire il routing in Istio utilizzando regole semplici.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Iniziare <\/a><\/noindex><\/p>\n<p><b>Regole di routing avanzate<\/b><br \/>\n60 minuti <br \/>\nScopriamo il routing intelligente in Istio, gestione degli accessi, bilanciamento del carico e limitazione della velocit\u00e0.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Iniziare<\/a><\/noindex> <\/p>\n<h4>Modulo 3 \u2013 Esperto<\/h4>\n<p>\n<b>Fault Injection in Istio<\/b><br \/>\n60 minuti <br \/>\nEsploriamo scenari di gestione dei guasti in applicazioni distribuite, creando errori HTTP e ritardi di rete, e impariamo a applicare il chaos engineering per ripristinare l'ambiente.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Iniziare<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker in Istio<\/b><br \/>\n30 minuti <br \/>\nInstalliamo Siege per testare la pressione dei siti e impariamo a garantire la resilienza del backend tramite retry, circuit breaker e pool ejection.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Iniziare<\/a><\/noindex> <\/p>\n<p><b>Egress e Istio<\/b><br \/>\n10 minuti <br \/>\nUtilizziamo le rotte Egress per creare regole di interazione tra servizi interni e API e servizi esterni.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Iniziare<\/a><\/noindex> <\/p>\n<p><b>Istio e Kiali<\/b><br \/>\n15 minuti <br \/>\nImpariamo a utilizzare Kiali per ottenere una panoramica del service mesh e studiare il flusso di richieste e dati.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Iniziare<\/a><\/noindex> <\/p>\n<p>Mutual TLS in Istio<br \/>\n15 minuti <br \/>\nCreiamo un Istio Gateway e un VirtualService, quindi approfondiamo il mutual TLS (mTLS) e le sue configurazioni.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Iniziare<\/a><\/noindex> <\/p>\n<h4>Modulo 3.1 \u2014 Approfondimento: 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>Cosa sono i service mesh.<\/li>\n<li>Il sistema Istio e il suo ruolo nell'architettura dei microservizi.<\/li>\n<li>Utilizzo di Istio per risolvere le seguenti problematiche:\n<ul>\n<li>Failover;<\/li>\n<li>Routing;<\/li>\n<li>Testing del caos;<\/li>\n<li>Sicurezza;<\/li>\n<li>Raccolta di 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 sui 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 routing di Istio: indirizziamo le richieste di servizio 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 la Pool Ejection<\/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 guasto \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 stanno andando e quanto velocemente<\/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: cos\u00ec era 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: semplificare l'implementazione<\/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>Provalo da solo<\/h3>\n<p>\nQuesta serie di post non ha l'obiettivo di fornire un'immersione profonda nel mondo di Istio. Vogliamo solo presentarvi il concetto stesso e, magari, ispirarvi a provare Istio da soli. Potete farlo completamente gratuitamente, e Red Hat fornisce tutti gli strumenti necessari per iniziare a esplorare OpenShift, Kubernetes, i container Linux e Istio, ovvero: <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 a Istio<\/a><\/noindex> e altre risorse sul nostro <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">micro-sito dedicato al Service Mesh<\/a><\/noindex>. Non aspettate, iniziate oggi stesso!<\/p>\n<h3>Regole di routing di Istio: indirizziamo le richieste di servizio 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> gestiscono perfettamente in modo che le richieste a <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservizi<\/a><\/noindex> siano instradate verso i pod corretti. Questa \u00e8 una delle ragioni principali per cui esiste Kubernetes: instradamento e bilanciamento del carico. E se avete bisogno di un instradamento pi\u00f9 preciso e sofisticato? Ad esempio, per utilizzare simultaneamente due versioni di un microservizio. Come possono aiutare le regole di instradamento di Istio?<\/p>\n<p>Le regole di instradamento sono le normative che, di fatto, determinano la scelta del percorso. Qualunque sia il livello di complessit\u00e0 del sistema, il principio generale di funzionamento di queste regole rimane semplice: le richieste vengono instradate in base a determinati parametri e valori degli header HTTP. <br \/>\nDiamo un'occhiata a degli esempi: <\/p>\n<h3>Kubernetes per impostazione predefinita: semplice '50 a 50'<\/h3>\n<p>\nNel nostro esempio mostreremo come utilizzare simultaneamente in OpenShift due versioni dello stesso microservizio, chiamandole v1 e v2. Ogni versione viene eseguita nel proprio pod Kubernetes, e per impostazione predefinita qui si utilizza un instradamento ciclico bilanciato uniformemente (evenly balanced round robin routing). Ogni pod riceve la sua quota di richieste in base al numero delle sue istanze del microservizio, in altre parole, delle repliche. Istio consente di modificare manualmente questo bilanciamento.<\/p>\n<p>Supponiamo di aver distribuito su OpenShift due versioni del nostro servizio di raccomandazione, recommendation-v1 e recommendation-v2.<br \/>\nIn figura 1 si pu\u00f2 vedere che quando ogni servizio \u00e8 rappresentato da un'istanza, le richieste si alternano uniformemente tra di essi: 1-2-1-2-\u2026 Questo \u00e8 il modo in cui funziona l'instradamento di Kubernetes 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 pesata tra le versioni<\/h3>\n<p>\nLa figura 2 mostra cosa succede se aumentiamo il numero di repliche del servizio v2 da uno a due (questo si fa 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 \"uno a tre\": 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>Ignora la versione con Istio<\/h3>\n<p>\nIstio consente di modificare facilmente la distribuzione delle richieste come desideriamo. Ad esempio, possiamo inviare tutto il traffico solo a recommendation-v1 utilizzando 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, utilizziamo l'etichetta v1. Il parametro 'weight: 100' significa che il 100% del traffico sar\u00e0 instradato verso tutti i pod del servizio che hanno l'etichetta v1.<\/p>\n<h3>Distribuzione direttiva tra le versioni (Canary Deployment)<\/h3>\n<p>\nSuccessivamente, utilizzando il parametro weight, possiamo indirizzare il traffico a entrambi i pod, ignorando il numero di istanze di microservizi in esecuzione in ciascuno di essi. Ad esempio, qui stiamo in modo direttivo portando 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>Instradamento separato per utenti mobili<\/h3>\n<p>\nInfine, mostreremo come instradare forzatamente il traffico degli utenti mobili verso il servizio v2 e tutti gli altri verso v1. A questo scopo analizziamo il valore user-agent nell'header della richiesta usando 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>Ora tocca a te<\/h3>\n<p>\nL'esempio con espressioni regolari per analizzare gli header dovrebbe motivarvi a esplorare le proprie varianti di applicazione delle regole di instradamento di Istio. Vale la pena ricordare che qui si aprono possibilit\u00e0 molto ampie, in quanto i valori degli header possono essere formati nel codice sorgente delle applicazioni.<\/p>\n<h3>E ricordate che Ops, non Dev<\/h3>\n<p>\nTutto ci\u00f2 che abbiamo mostrato negli esempi sopra viene realizzato senza alcuna modifica al codice sorgente, fatta eccezione per i casi in cui \u00e8 necessario formare header specifici delle richieste. Istio sar\u00e0 utile sia per gli sviluppatori, che potranno utilizzarlo nella fase di testing, sia per gli specialisti della gestione dei sistemi IT, che ne trarranno grandi benefici in produzione.<\/p>\n<p>Quindi ripetiamo il leitmotiv di questa serie di post: <b>non \u00e8 necessario modificare il proprio codice<\/b>. Non \u00e8 necessario costruire nuove immagini o avviare nuovi container. Tutto ci\u00f2 viene realizzato al di fuori del codice.<\/p>\n<h3>Metti in moto l'immaginazione<\/h3>\n<p>\nBasta immaginare quali opportunit\u00e0 si aprono con l'analisi degli header tramite 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>Provalo da solo<\/h3>\n<p>\nLeggere di Istio, Kubernetes e OpenShift \u00e8 una cosa, ma perch\u00e9 non provare a fare tutto con le tue mani? Il team <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> ho preparato una guida dettagliata (in inglese) che ti aiuter\u00e0 a comprendere rapidamente queste tecnologie. 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 nelle versioni Java e node.js (presto saranno disponibili versioni in altre lingue). Basta aprire il relativo repository git nel tuo browser <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 stile<\/h3>\n<p>\nOggi hai visto di cosa sono capaci le regole di instradamento di Istio. Ora immagina tutto ci\u00f2 applicato alla gestione degli errori. Di questo 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.0.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.0.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 sulla Istio Service Mesh | ProHoster","description":"Iniziamo una serie di post in cui mostreremo alcune delle numerose funzionalit\u00e0 della rete di servizi 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}]}}