Componente aggiuntivo mesh di servizi basato su Istio per servizio Azure Kubernetes

Istio affronta le sfide che gli sviluppatori e gli operatori affrontano con un'architettura distribuita o di microservizi. Il componente aggiuntivo Mesh di servizi basato su Istio offre un'integrazione ufficialmente supportata e testata per il servizio Azure Kubernetes.

Che cos'è una mesh di servizi?

Le applicazioni moderne sono in genere strutturate come raccolte distribuite di microservizi, con ogni raccolta di microservizi che eseguono alcune funzioni aziendali discrete. Una mesh di servizi è un livello di infrastruttura dedicato che è possibile aggiungere alle applicazioni. Consente di aggiungere in modo trasparente funzionalità come osservabilità, gestione del traffico e sicurezza, senza aggiungerle al proprio codice. Il termine service mesh descrive sia il tipo di software usato per implementare questo modello che il dominio di sicurezza o di rete creato quando si usa tale software.

Poiché la distribuzione di servizi distribuiti, ad esempio in un sistema basato su Kubernetes, aumenta di dimensioni e complessità, può diventare più difficile comprendere e gestire. Potrebbe essere necessario implementare funzionalità come l'individuazione, il bilanciamento del carico, il ripristino degli errori, le metriche e il monitoraggio. Una mesh di servizi può anche soddisfare requisiti operativi più complessi, ad esempio test A/B, distribuzioni canary, limitazione della frequenza, controllo di accesso, crittografia e autenticazione end-to-end.

La comunicazione da servizio a servizio è ciò che rende possibile un'applicazione distribuita. Il routing di questa comunicazione, sia all'interno che all'interno dei cluster applicazioni, diventa sempre più complesso man mano che aumenta il numero di servizi. Istio aiuta a ridurre questa complessità, riducendo al contempo il carico dei team di sviluppo.

Che cos'è Istio?

Istio è una mesh di servizi open source che esegue il layer trasparente sulle applicazioni distribuite esistenti. Le potenti funzionalità di Istio offrono un modo uniforme ed efficiente per proteggere, connettere e monitorare i servizi. Istio abilita il bilanciamento del carico, l'autenticazione da servizio a servizio e il monitoraggio, con poche o nessuna modifica del codice del servizio. Il suo potente piano di controllo offre caratteristiche vitali, tra cui:

  • Proteggere la comunicazione da servizio a servizio in un cluster con crittografia TLS (Transport Layer Security), autenticazione basata su identità avanzata e autorizzazione.
  • Bilanciamento del carico automatico per il traffico HTTP, gRPC, WebSocket e TCP.
  • Controllo con granularità fine del comportamento del traffico con regole di routing avanzate, ripetizione dei tentativi, failover e fault injection.
  • Un livello di criteri collegabile e un'API di configurazione che supportano i controlli di accesso, i limiti di velocità e le quote.
  • Metriche, log e tracce automatiche per tutto il traffico all'interno di un cluster, inclusi ingresso e uscita del cluster.

In che modo il componente aggiuntivo è diverso da Istio open source?

Questo componente aggiuntivo service mesh usa e si basa su Istio open source. Il sapore del componente aggiuntivo offre i vantaggi aggiuntivi seguenti:

  • Le versioni istio vengono testate e verificate per essere compatibili con le versioni supportate del servizio Azure Kubernetes.
  • Microsoft gestisce il ridimensionamento e la configurazione del piano di controllo Istio
  • Microsoft regola il ridimensionamento dei componenti del servizio Azure Kubernetes, ad esempio coredns quando Istio è abilitato.
  • Microsoft fornisce il ciclo di vita gestito (aggiornamenti) per i componenti Istio quando viene attivato dall'utente.
  • Configurazione dell'ingresso esterno e interno verificato.
  • Verificato per funzionare con il servizio gestito di Monitoraggio di Azure per Prometheus e Grafana con gestione Azure.
  • Supporto ufficiale di Azure fornito per il componente aggiuntivo.

Limiti

Il componente aggiuntivo mesh di servizi basato su Istio per il servizio Azure Kubernetes presenta le limitazioni seguenti:

  • Il componente aggiuntivo non funziona nei cluster del servizio Azure Kubernetes che usano il componente aggiuntivo Open Service Mesh per il servizio Azure Kubernetes.

  • Il componente aggiuntivo non funziona nei cluster del servizio Azure Kubernetes con installazioni autogestito di Istio.

  • Il componente aggiuntivo non supporta l'aggiunta di pod associati ai nodi virtuali da aggiungere nella mesh.

  • Il componente aggiuntivo non supporta ancora i gateway in uscita per il controllo del traffico in uscita.

  • Il componente aggiuntivo non supporta ancora la modalità ambient senza sidecar. Microsoft sta attualmente contribuendo a Ambient workstream in Istio open source. L'integrazione del prodotto per la modalità Ambient è in programma e viene valutata continuamente man mano che il flusso di lavoro ambient si evolve.

  • Il componente aggiuntivo non supporta ancora le distribuzioni multi-cluster.

  • Il componente aggiuntivo non supporta ancora i contenitori di Windows Server. I contenitori di Windows Server non sono ancora supportati in Istio open source. Il rilevamento dei problemi di questa funzionalità è disponibile qui.

  • La personalizzazione della mesh tramite le risorse personalizzate seguenti è attualmente bloccata: ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin.

  • Il componente aggiuntivo consente l'uso dei tipi di filtro seguenti EnvoyFilter , con altri tipi di filtro bloccati:

    • Lua (type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua).
    • Compressore (type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor)
    • Limite di frequenza locale (type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit)

    Nota

    Anche se questi EnvoyFiltersono consentiti, qualsiasi problema derivante da essi (ad esempio dalla scipt Lua o dalla libreria di compressione) non rientra nell'ambito di supporto del componente aggiuntivo Istio. Per altre informazioni sulle categorie di supporto per le funzionalità e le opzioni di configurazione dei componenti aggiuntivi Istio, vedere il documento relativo ai criteri di supporto.

  • L'API gateway per il gateway di ingresso Istio o la gestione del traffico mesh (GAMMA) non sono attualmente supportate con il componente aggiuntivo Istio. Tuttavia, l'API gateway per la gestione del traffico in ingresso Istio è attualmente in fase di sviluppo attivo per il componente aggiuntivo. Sebbene il componente aggiuntivo supporti la personalizzazione delle annotazioni per i gateway di ingresso Istio per indirizzi IP e tag di servizio, la configurazione della porta o del protocollo non è attualmente supportata.

Commenti e suggerimenti e richieste di funzionalità

Il feedback e la richiesta di funzionalità per il componente aggiuntivo Istio possono essere forniti creando problemi con l'etichetta "service-mesh" nel repository GitHub del servizio Azure Kubernetes.

Passaggi successivi