Perché l'orchestrazione dei contenitori è importante?
- 7 minuti
In questa unità, puoi seguire il team di Tailspin mentre esplora strategie per l'attuazione di una nuova direttiva dalla direzione. Il team esamina in che modo Kubernetes può facilitare la transizione a un'architettura di microservizi.
Il futuro è più piccolo
Le cose stanno migliorando a Tailspin. In una recente gestione fuori sede, Andy ha presentato i recenti successi del suo team con Azure DevOps, che sono stati ben ricevuti. Andy ha anche presentato una demo del recente progetto concettuale del team utilizzando contenitori Docker. Queste dimostrazioni hanno portato a una serie di conversazioni produttive sul futuro tecnico dell'organizzazione. Il giorno successivo, Andy torna a condividere le notizie con il team Web di Space Game.
Andy: Le cose sono andate molto bene alla mia presentazione fuori sede ieri. La gestione è impressionata dal lavoro svolto finora e ci ha emesso un incarico speciale.
Tim: Oh, oh. Ho vissuto abbastanza a lungo per vedere una trappola come quella arrivare da un miglio di distanza.
Andy: No, questa è una grande opportunità per noi. La gestione ha apprezzato la demo dei contenitori Docker e vuole esplorare l'adozione di un'architettura di microservizi.
Amita: Microservizi? Ti piacciono le app per telefoni e orologi?
Andy: No, i microservizi sono app tipiche, ad esempio l'app Web. La differenza principale è che, invece di creare e distribuire una singola app monolitica, ristrutturiamo tutti i componenti che sarebbe meglio mantenere e gestire come servizi autonomi. Questi servizi vengono quindi sviluppati in modo che siano validi per ciò che fanno e vengono distribuiti così da operare in modo indipendente.
Tim: Non sono sicuro che mi piace il suono di questo. Ho già tantissimi servizi da seguire in tutti gli ambienti, Non so se voglio di più sul mio piatto.
Andy: Questa è una preoccupazione comprensibile. Fortunatamente, esistono alcuni ottimi strumenti per la gestione di una moltitudine di contenitori in un determinato ambiente. Ci è stato chiesto di esplorare una soluzione multi-contenitore per la nostra app web orchestrata tramite Kubernetes. Vogliono anche sapere come influirà sul processo DevOps.
Mara: Ho letto su Kubernetes. Azure offre un supporto ottimale tramite il servizio Azure Kubernetes e so che è disponibile il supporto per la pipeline in Azure DevOps.
Amita: questo processo sembra essere complesso. In che modo influisce sul test?
Mara: Non dovrebbe essere un cambiamento significativo. Kubernetes offre un modo per distribuire a namespace diversi. In questo modo è possibile partizionare le distribuzioni in modo che sia possibile disporre di interi ambienti dedicati ai test e alla produzione. Poiché tutti vengono eseguiti nello stesso cluster e usano gli stessi contenitori, l'esperienza di test dovrebbe offrire ciò che ci si aspetta di vedere nell'ambiente di produzione.
Amita: sarà difficile tenere traccia delle posizioni dei diversi ambienti?
Mara: No, è possibile usare gli ambienti Azure DevOps per eseguire tutte queste operazioni. Sarà possibile scoprire dove si trova ogni servizio e come è arrivato usando il portale. È tutto automatizzato tramite la pipeline, quindi non sarà necessario tenere traccia manualmente. L'unica preoccupazione che ho ora è l'impatto che avrà sulla nostra esperienza di sviluppo per costruire questo.
Andy: La buona notizia è che l'impatto è minimo. Supponendo che i progetti siano configurati per creare contenitori Docker, tutto ciò di cui abbiamo bisogno per distribuire in Kubernetes sono alcuni file manifesto che descrivono i servizi e le loro distribuzioni.
Mara: hai pensato a quale elemento sottoporre a refactoring per fungere da secondo contenitore? So che ci sono stati diversi team che ci chiedono di rendere disponibile il nostro tabellone punteggi tramite un'API Web.
Andy: Sono un passo avanti di te. ieri sera ho creato una copia tramite fork del progetto Docker e ho effettuato il refactoring della funzionalità dei dati del tabellone nel suo microservizio. Questo ci lascia con un contenitore per il sito Web e un altro per un'API del tabellone punteggi. Entrambi i contenitori sono configurati per avere endpoint pubblici che è possibile condividere con chiunque voglia usare il sito o l'API, indipendentemente dallo stack tecnologico usato dall'app. Se il carico aumenta notevolmente per entrambi, è possibile ridimensionare i contenitori in modo indipendente.
Mara: Questo progetto sembra fantastico! Iniziamo ad aggiornare la pipeline di rilascio.
Che cos'è Kubernetes?
Kubernetes è una piattaforma di orchestrazione di contenitori open source che automatizza la distribuzione, il dimensionamento e la gestione delle applicazioni in contenitori. Fornisce un framework per l'esecuzione di sistemi distribuiti in modo dichiarativo e reattivo e può eseguire contenitori in più host, offrendo un uso efficiente delle risorse e un maggiore affidabilità.
Il team di Tailspin ha selezionato Kubernetes per questo scenario perché soddisfa tutte le proprie esigenze:
Complessità delle distribuzioni multi-contenitore: Kubernetes è progettato, in primo luogo, per automatizzare i processi relativi alla distribuzione e alla gestione delle distribuzioni dei contenitori.
Coerenza tra ambienti e fasi: proprio come i contenitori garantiscono una distribuzione coerente per le app che contengono, Kubernetes garantisce una distribuzione coerente per i contenitori gestiti da un cluster.
Supporto di Azure DevOps: Azure DevOps offre supporto di prima classe per l'uso di Kubernetes.
Facilità di sviluppo: l'impatto di Kubernetes su un progetto di origine è paragonabile a quello dell'aggiunta del supporto Docker, che è minimo e limitato alla configurazione dichiarativa.
L'adozione di Kubernetes semplifica drasticamente il processo di adozione di un'architettura di microservizi che usa più contenitori Docker.