Nell’intervento al Codemotion di Milano 2019,ALessandro Lai conferma questo trend e ci espone il deploy dei container in produzione attraverso Kubernetes. Ma questo strumento ha notevoli feature in più e Lai ha affrontato un esempio completo di applicazione Symfony dalla sua creazione, configurazione e distribuzione attraverso Docker e Kubernetes.
Per comprendere al meglio questo speech dobbiamo analizzare nel dettaglio tre strumenti indispensabili
Concretamente abbiamo assistito ad un’overview completa nell’utilizzo della tecnologia Kubernetes per gli sviluppatori web.
Partiamo dalla foglia più piccola dell’intera alberatura di Kubernetes: il POD. Al suo interno è contenuto il vero e proprio cuore dell’applicativo scritto e sviluppato in Symfony. Al suo interno quindi verranno definite le classi e le procedure PHP dell’applicazione Web. Rappresenta un gruppo di uno o più container distribuiti su un singolo nodo/servizio. Tutti i container dichiarati in un pod condividono indirizzo IP, nome host ed altre risorse. I pods astraggono la rete e lo storage dal container sottostante. I PODs possono essere raggruppati in nodi (servizi) e gestiti da un controller-runtime specifico e a loro volta sono controllati dal nodo master di Kubernetes. La comunicazione tra nodo master e servizi sottostanti è data dal “Kubelet”: un servizio eseguito sui nodi che legge i manifest (file .yml) del container e garantisce che i container definiti vengano avviati ed eseguiti. Questo sarà il punto esposto e di comunicazione con il mondo esterno attraverso l’API server. Per gli sviluppatori, invece, ci sarà un ulteriore strumento per poter configurare e gestire Kubernetes: “Kubectl”, la vera e propria riga di comando per lo sviluppo. Quando viene assegnato un pod a un servizio, il kubelet presente su quel nodo chiede a docker di avviare i container specificati. Quindi, il kubelet legge continuamente lo stato di quei container da docker e aggrega le informazioni nel nodo master. Docker invia i container sul nodo, avvia e arresta normalmente i container. Kubernetes automatizza queste operazioni eseguite dal docker anziché costringere gli sviluppatori ad eseguirle manualmente.
Lo speech di Alessandro Lai è stato molto sperimentale, con esempi concreti di utilizzo del codice su un’applicazione web reale. Per comprendere al meglio tutte le particolarità riportate in questo articolo è necessario approfondire ulteriormente gli argomenti chiave in modo pratico. Ecco dei link molto interessanti a riguardo
Grazie alle nozioni di questo specch abbiamo concretizzato la linea di utilizzo dei docker e della loro importanza per il rilascio in produzione di applicativi web e non solo. L’accostamento con Kubernetes permette di organizzare e rendere scalabile ancor di più un software basato su docker.