Dall'archivio articoli > DevOps
Sfruttare al massimo Kubernetes con Azure DevOps
Per poter utilizzare questa funzionalità, devi fare il login o iscriverti.
Negli articoli precedenti presenti su questo canale abbiamo introdotto quella che è la nuova filosofia che dovrebbe guidare lo sviluppo di qualsiasi tipologia di progetto. Infatti, sia che si tratti di applicazioni "classiche", piuttosto che di applicazioni moderne basate, ad esempio, su micro-services, piuttosto ancora che applicazioni intranet o enterprise, tutti, dagli sviluppatori ai manager di alto livello, si devono adattare a quelli che sono definiti come standard del ciclo di sviluppo moderno, dettati dalle pratiche di DevOps.
Abbiamo già trattato di come Azure DevOps ci aiuti a raggiungere questi standard: tramite Azure Boards possiamo programmare il lavoro ad ogni livello del team, grazie ad una gestione del codice sorgente efficiente possiamo tenere traccia di tutte le modifiche fatte al software e all'infrastruttura (per via di Infrastructure as Code), tramite Azure Test Plan possiamo tenere traccia di tutte le esecuzioni di unit test, test di integrazione, UI test e così via, mentre tramite la parte di build e release management possiamo rilasciare in modo continuo, anche sull'ambiente di produzione, le ultime modifiche fatte sul repository. Quello che ci resta da affrontare è relativo al deployment stesso: come possiamo essere efficienti nel rilasciare il codice?
Kubernetes (o K8s, in seguito), è una piattaforma che ci può venire incontro. Originariamente sviluppato da Google, ora gestito dalla Cloud Native Computing Foundation (CNCF) e supportato da grandi partner come Microsoft, Amazon, IBM, Intel, Cisco, Red Hat e Google stessa, Kubernetes è diventato lo strumento open-source di orchestrazione di container per eccellenza e permette non solo di gestire i container, per l'appunto, ma anche di automatizzare i deployment e la scalabilità degli stessi. Kubernetes rende molto semplice l'orchestrazione delle applicazioni, sia che esse siano classici monoliti, sia che essi siano organizzati con un'architettura basata a micro-services. Come vedremo in questo articolo, però, Kubernetes può essere utilizzato anche per molti altri scopi e si integra perfettamente con Azure DevOps, anche nei punti più impensati.
L'orchestrazione avviene creando un layer di astrazione al di sopra delle macchine host, così che i team di sviluppo possano fare il deploy con semplicità dele loro applicazioni, senza che si debbano preoccupare dell'infrastruttura sottostante. K8s:
Kubernetes non è solo una moda temporanea, come può sembrare. Al contrario, dobbiamo osservare come stanno cambiando gli approcci allo sviluppo e in particolare al deployment:
Docker, al contrario di quanto si può pensare, non ha inventato i container ma ha "solamente" portato questa tecnologia alla portata di tutti. Quando si parla di applicazioni complesse, però, andare nel cloud e gestire le applicazioni con App Service, ad esempio, potrebbe non essere sufficiente per gestire gli scenari di alta affidabilità e scalabilità che abbiamo anticipato in precedenza e Docker, da solo, non è in grado di aiutarci. Proprio per questo motivo ci serve una piattaforma, come Kubernetes, che ci aiuti nell'orchestrazione dei servizi. K8s:
E' importante capire com'è strutturato Kubernetes e vedere come interagiscono i vari componenti poiché nelle pagine seguenti entreremo nel vivo dell'installazione e della sua configurazione. Principalmente, è necessario capire che, a grandi linee, possiamo divedere il tutto in due parti: il master node e i worker node.
Il nodo master, detto anche control plane, è il componente principale poiché è colui che dovrà prendere tutte le decisioni in merito al cluster come, ad esempio, gestire il suo stato, effettuare i deployment, creare nuove repliche dei servizi per scalarli etc. Nonostante sia il nodo principale, può essere configurato su qualsiasi macchina, esattamente come i worker node che vedremo a breve, pertanto non ha bisogno di una configurazione particolare. Per quanto riguarda i componenti che lo formano, troviamo:
All'interno di ogni nodo del cluster di K8s, invece, troviamo i seguenti componenti:
Oltre a questi componenti, troviamo anche diversi add-on che possono essere installati sul cluster come, ad esempio, una dashboard web per avere accesso al cluster tramite interfaccia grafica anziché solo tramite riga di comando, ma rimandiamo alla documentazione ufficiale per maggiori dettagli poiché questi servizi dipendono dall'implementazione che vogliamo supportare.
Capiti quelli che sono i vantaggi nell'adottare un approccio nuovo allo sviluppo, i benefici nello scegliere un'architettura basata su Kubernetes, vediamo ora come possiamo installare il cluster nella versione on-premise, piuttosto che sfruttare la versione in cloud come servizio gestito, per arrivare, infine, a vedere come Kubernetes può essere integrato in uno scenario alternativo al deployment all'interno di Azure DevOps per migliorare i flussi applicativi.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.