Un container consiste in un’istanza virtuale isolata alla quale è possibile assegnare risorse computazionali (CPU, RAM, HD) da utilizzare nella gestione di programmi e applicazioni. Nell’articolo Macchine virtuali e container: qual è la differenza abbiamo visto come ad esempio i container Docker possano essere utilizzati per gestire applicazioni e servizi in maniera efficace puntando sugli aspetti prestazionali.
La containerizzazione facilita l’isolamento delle risorse disponibili evitando che possano crearsi sovrapposizioni, rende la reversibilità attuabile in modo semplice (si possono annullare le modifiche applicate al contenuto di un container in pochi minuti) e rende immediata la creazione e la gestione di ambienti di test e sviluppo.
Jelastic Cloud di Aruba permette di sfruttare i vantaggi della tecnologia Docker semplificando l’accesso diretto alle immagini dei container distribuite dai principali hub e permettendo comunque agli utenti di caricare le proprie.
L’accesso ai container è possibile tramite interfaccia web, usando API aperte e via SSH (anche senza abbandonare il browser, evitando di ricorrere a un client a sé stante).
Per avere un’idea di ciò che è possibile containerizzare, è possibile fare riferimento al Docker Hub: si troveranno sistemi operativi, linguaggi di sviluppo, framework, librerie, database, sistemi per lo storage dei dati, servizi di messaggistica, applicazioni e servizi, soluzioni per la sicurezza, per la statistica, per il monitoraggio dei sistemi e così via.
Cliccando su New environment nell’interfaccia web di Jelastic Cloud di Aruba quindi sulla scheda Docker e infine su Select image, si può scegliere quali container utilizzare sulla piattaforma.
Effettuando una ricerca per mezzo della casella Docker Hub, si troveranno tutti i container visti in precedenza.
Cercando la stringa jelastic
si troveranno i container gestiti e ottimizzati da Jelastic.
Il bello del servizio Jelastic Cloud di Aruba è che possibile configurare una serie di nodi Docker gestiti in “modalità swarm“, una caratteristica propria di Docker che consente di allestire un cluster di container fault-tolerant così da assicurarsi che i servizi erogati siano costantemente disponibili e i carichi di lavoro distribuiti in maniera adeguata (vedere la pagina sul sito Jelastic Cloud di Aruba dedicata all’approccio CaaS, Container-as-a-Service).
Un cluster swarm si basa su due livelli chiamati manager e worker: il primo mantiene lo stato della configurazione utilizzata e tutti i servizi che sono in esecuzione su di essa; il secondo riceve le indicazioni sui compiti da svolgere e li esegue elaborando le informazioni trasmesse dai nodi manager.
Durante la fase di impostazione del cluster, l’utente di Jelastic Cloud ha la possibilità di definire il numero di container che andranno a comporre ciascun livello (le cosiddette “repliche”) e scegliere il tipo di installazione da eseguire.
Tutti i container Docker, inoltre, vengono distribuiti in maniera omogenea sulle varie risorse hardware (server fisici) responsabili dell’erogazione del servizio Jelastic Cloud di Aruba.
In questo modo, nella remota eventualità in cui dovesse verificarsi un problema hardware a basso livello, i servizi continueranno a essere perfettamente raggiungibili e fruibili.
Come creare un cluster swarm con Docker
Accedendo al marketplace della piattaforma Jelastic Cloud di Aruba, quindi cliccando su Clusters, Docker Swarm Cluster e infine su Install, apparirà una schermata simile a quella riprodotta in figura.
Come si vede, la procedura di configurazione del cluster swarm proposta da Jelastic Cloud permette di definire il numero dei nodi da usare, rispettivamente, per i layer Manager e Worker. Nel caso dei nodi Manager, Docker assegnerà automaticamente un indirizzo IP pubblico al container principale.
Selezionando Clean Cluster, si predispone un cluster swarm Docker nella configurazione desiderata che di fatto sarà vuoto e pronto per essere utilizzato. Spuntando eventualmente la casella Installer Portainer UI, si può installare la comoda interfaccia web di amministrazione (vedere il sito ufficiale di Portainer) che evita di dover lavorare da riga di comando per intervenire sul cluster e sui singoli container.
Se ci si fosse appena avvicinati a Docker e a Jelastic Cloud, consigliamo vivamente di installare l’interfaccia Portainer: semplificherà notevolmente tutte le attività di gestione. Nulla vieta, comunque, di collegarsi via SSH – anche da web tramite il pannello di amministrazione – e di usare quindi la riga di comando.
Dopo aver impostato la configurazione del cluster swarm, cliccando su Install si dovrà semplicemente attendere l’impostazione dell’ambiente.
Al termine dell’installazione, Jelastic Cloud di Aruba mostra i comandi da usare (insieme con il token) autorizzativo ad esempio per aggiungere un nodo Manager o Worker al cluster appena creato usando SSH. Tutte le informazioni verranno inviate anche tramite email sull’indirizzo collegato all’account Jelastic Cloud.
Premendo due volte Close, nella dashboard in fondo alla schermata principale di Jelastic Cloud comparirà l’elenco dei vari nodi attivati.
L’interfaccia di Portainer è raggiungibile semplicemente puntando il browser sull’indirizzo HTTPS dell’ambiente Jelastic Cloud appena creato. Per default si otterrà il messaggio d’errore La connessione non è privata perché Portainer sta usando un certificato digitale auto-generato. Per proseguire, basterà cliccare su Avanzate quindi cliccare sul link Procedi su … (non sicuro) in basso.
Ovviamente, per evitare la comparsa dell’errore, si potrà successivamente configurare un certificato digitale valido e non scaduto. In ogni caso, l’utilizzo del certificato auto-generato non crea problemi sul funzionamento di Portainer.
Per effettuare il login all’interfaccia web di Portainer, basterà ricevere le credenziali ricevute via email dalla piattaforma Jelastic Cloud di Aruba.
A questo punto, facendo riferimento alla sezione Container di Portainer quindi digitando il nome di un container, sarà possibile scaricarlo e installarlo all’interno del proprio cluster appoggiandosi al Docker Hub.
Cliccando su Images è possibile verificare l’elenco delle immagini dei container Docker scaricati e disponibili mentre Network mostra le interfacce di rete virtuali attive e i rispettivi intervalli di indirizzi IP.
È interessante notare che cliccando su Swarm, si verificherà la configurazione e lo stato di tutti i nodi Docker così come visualizzati anche nel pannello di amministrazione di Jelastic Cloud.
Cos’è un cluster Kubernetes e come configurarlo con Jelastic Cloud di Aruba
Kubernetes (in breve K8s) è un sistema per l’orchestrazione e la gestione di container inizialmente sviluppato da Google e adesso mantenuto da Cloud Native Computing Foundation. Esso è compatibile con molteplici sistemi di containerizzazione, Docker compreso, e consente di combinare tra loro più container avvantaggiandosi di un livello di astrazione ancora più elevato e superando molti dei processi manuali coinvolti nel deployment e nello scaling di applicazioni containerizzate.
Il pod è il punto centrale dell’architettura sulla quale si basa Kubernetes: i pod sono composti da un insieme di container che condividono le risorse di rete e lo storage.
In questo gli utenti possono ad esempio spostare i container nei cluster con maggiore facilità proprio grazie all’astrazione della rete e dello storage dai container sottostanti.
Un controller di replica si occupa di controllare il numero di copie identiche di un pod che devono essere eseguite in un punto preciso sul cluster.
Nel marketplace di Jelastic Cloud di Aruba, cliccando sulla sezione Clusters, si trova la voce Kubernetes Cluster che consente appunto di creare un cluster Kubernetes con scaling automatico utilizzabile sia in produzione che per le attività di sviluppo e test.
La procedura di creazione guidata del cluster Kubernetes permette di creare un ambiente vuoto (con un esempio precaricato) oppure di disporre il deployment di uno stack personalizzato usando ad esempio helm e la riga di comando.
Come si vede, per finalità di sviluppo e testing, viene configurato l’utilizzo di un solo master e di un worker scalabile; per scopi produttivi, invece, viene predisposta una configurazione più aggressiva.
Le impostazioni successive permettono di decidere il controller da usare, la versione della dashboard di Kubernetes che si preferisce, se collegare uno storage dinamico basato su NFS (Network File System, consente di utilizzare la rete per accedere alle unità di memorizzazione come fossero dischi locali), di attivare eventualmente l’accesso remoto tramite apposite API, di installare strumenti come Prometheus, Grafana e Jaeger. I primi due sono fantastici tool per monitoraggio e reporting mentre Jaeger permette di abilitare ed eseguire il cosiddetto distributed tracing costruendo delle viste in tempo reale sulla catena di chiamate e sulle interazioni tra i vari servizi configurati nel cluster Kubernetes.
Creando un cluster Kubernetes con le impostazioni predefinite per scopi produttivi, dopo alcuni minuti di attesa si otterrà – grazie a Jelastic Cloud di Aruba – un ambiente completamente configurato e pronto per l’utilizzo.
Al termine della procedura, verrà mostrato il token autorizzativo da usare per attivare successivamente l’accesso alla piattaforma e cliccando sul pulsante Open in browser si aprirà la schermata di benvenuto dell’application server installato per default ovvero Open Liberty, progettato per creare e distribuire applicazioni cloud native e microservices con Java.
Cliccando su Kubernetes UI si accederà all’interfaccia di amministrazione che potrà essere utilizzata semplicemente selezionando l’opzione Token e incollando la lunga stringa alfanumerica ottenuta al termine della configurazione con Jelastic Cloud.
Dopo aver fatto clic sul pulsante di login (Sign in), ci si troverà dinanzi al pannello di gestione del cluster Kubernetes appena approntato.
Con un clic su Nodes si può ottenere la lista dei nodi in uso, la stessa che comparirà nella schermata principale di Jelastic Cloud, nell’ambito del proprio account.
Proprio cliccando sull’icona Change Environment Topology, si potranno modificare le preferenze in termini di scalabilità automatica orizzontale e verticale: dopo aver atteso qualche minuto, le variazioni applicate compariranno anche nell’interfaccia web di Kubernetes.
Come nel caso dell’approccio basato su Docker, anche nel caso di cluster Kubernetes è possibile gestire l’ambiente anche da riga di comando cliccando sull’icona Web SSH in corrispondenza del nodo master. Qui, digitando ad esempio comandi come kubectl get deployments
, kubectl get pods
e kubectl get nodes
, si possono ottenere, rispettivamente, l’elenco dei deployment in uso ovvero delle repliche dell’applicazione in esecuzione; dei pod e dei nodi.
Con Jelastic Cloud di Aruba, grazie al supporto dei container Docker, della modalità swarm, di Kubernetes, la gestione di configurazioni complesse sul cloud diventa cosa semplicissima e interamente gestibile attraverso semplici interfacce web. Agendo sull’interfaccia di Jelastic Cloud, è poi possibile aggiungere nuovi componenti software con la possibilità di caricare immagini Docker personalizzate, richiedere l’installazione e la configurazione automatica di linguaggi, framework, database relazionali e non, elastic VPS e molto altro ancora.
Le possibilità sono virtualmente infinite e Jelastic Cloud di Aruba mette nelle mani degli sviluppatori e degli amministratori strumenti fino a poco tempo fa neanche lontanamente disponibili sul piano della completezza, della flessibilità e della versatilità.