Container as a Service: i migliori servizi contenitore sul mercato a confronto

Siete alla ricerca di una piattaforma di virtualizzazione a contenitore a livello del sistema operativo, ma volete risparmiare su costo ed energia per la preparazione dei componenti necessari di hardware e software? Nessun problema, infatti grazie al modello Container as a Service, il servizio più all’avanguardia presente sul mercato del cloud computing, avete a disposizione piattaforme container come soluzioni complete di hosting su cloud. Vi presentiamo tre delle piattaforme CaaS più popolari: Google Container Engine (GKE), Amazon EC2 Container Service (ECS) e infine Microsoft Azure Container Service (ACS). Inoltre vi spieghiamo come sfruttare in ambito aziendale i servizi container basati su Cloud.

Cos’è il CaaS?

CaaS, abbreviazione di Container as a Service, è un modello di business in cui servizi di piattaforme di cloud computing mettono a disposizione prestazioni relative alla virtualizzazione a container come servizio online ridimensionabile. Ciò permette agli utenti finali di prendere in considerazione servizi container senza per forza dover disporre di un’infrastruttura che, in teoria, sarebbe indispensabile per utilizzarli. Il termine è una classica espressione del mondo del marketing che si rifà a noti modelli di servizi cloud come Infrastructure as a Service (IaaS), Platform as a Service (PaaS) e Software as a Service (SaaS).

Cosa sono i servizi container?

Con servizio container si intende un pacchetto di prestazioni offerto da un provider di cloud computing che permette agli utenti di sviluppare software in cosiddetti container di applicazione, di effettuare dei test, di eseguirli oppure di distribuirli attraverso infrastrutture informatiche apposite.

La containerizzazione di applicazioni altro non è che un concetto derivante dal mondo Linux: questa tecnologia permette la virtualizzazione a livello del sistema operativo eseguendo singole applicazioni, incluse tutte le funzioni annesse come le librerie e i file di configurazione, sotto forma di istanze incapsulate. Ciò permette l’utilizzo simultaneo su un unico sistema operativo di più applicazioni aventi diverse richieste e il deployment per mezzo di sistemi differenti.

Di norma il modello CaaS contiene un ambiente container completo, inclusi i tool di orchestrazione, un catalogo di immagini (il cosiddetto registry), un software di gestione dei cluster e infine un set di tool per sviluppatori e di API (Application Programming Interfaces, in italiano: interfacce di programmazione). Il calcolo dei costi si basa sull’utilizzo delle risorse e sulla tipologia di pacchetto noleggiato.

Differenza da altri servizi cloud

A partire dalla metà degli anni 2000 grazie al cloud computing le aziende e i privati hanno a disposizione un’alternativa per la preparazione di risorse IT su macchina locale (On Premises). In questo contesto si distinguono tre diversi modelli di servizio: IaaS, PaaS e SaaS.

  • IaaS
    L’Infrastructure as a Service comprende la preparazione di risorse hardware virtuali come la performance del computer, lo spazio di archiviazione e le capacità di rete. I servizi del modello IaaS mettono a disposizione questi pilastri alla base delle infrastrutture IT sotto forma di macchine virtuali (Virtual Machines) o di Virtual Local Area Networks (VLAN). Gli utenti attingono alle risorse cloud su Internet tramite API. Il modello IaaS rappresenta il livello più basso del modello di cloud computing.
  • PaaS
    Il livello intermedio del modello di cloud computing viene definito come Platform as a Service. Nell’ambito del modello PaaS, i servizi cloud mettono a disposizione le piattaforme di programmazione e ambienti di sviluppo su Internet. Di solito il PaaS comprende l’intero ciclo vitale di un software (Lifecycle Management): a partire dallo sviluppo passando per la fase di test fino ad arrivare alla consegna e all’utilizzo. Il PaaS si basa sullo IaaS.
  • SaaS
    Per quanto riguarda il livello più alto del modello di cloud computing, si tratta di un mero livello di applicazione. Con Software as a Service si intende la preparazione di software di applicazione tramite Internet. In questo modello di servizio i programmi messi a disposizione non funzionano sull’hardware del cliente, bensì sul server del servizio. Il SaaS si basa sullo IaaS e sul PaaS. L’accesso avviene tramite browser o agent software.

Lo scopo dell’approccio orientato al servizio nella fornitura di risorse IT è quello di permettere agli utenti finali di focalizzarsi totalmente sul proprio business. Mettiamo il caso di uno sviluppatore che prende in considerazione il PaaS per testare delle applicazioni: dovrà solamente limitarsi a caricare il codice che ha lui stesso programmato sul cloud, mentre tutte le premesse tecniche per il processo di creazione, la gestione e il deployment dell’applicazione saranno messe a disposizione dal servizio della piattaforma del PaaS.

In questa suddivisione classica dei tre affermati modelli di cloud computing, il CaaS si posiziona tra lo IaaS e il PaaS. Rispetto a questi modelli di servizio, il Container as a Service si differenzia tuttavia per un approccio di virtualizzazione essenzialmente diverso: la tecnologia dei container.

Anche il CaaS permette agli utenti una completa gestione del ciclo vitale di applicazioni software. Diversamente dallo IaaS e dal PaaS, la preparazione di risorse virtualizzate non si basa sulla virtualizzazione supportata da hypervisor di macchine virtuali separate con un proprio sistema operativo. Piuttosto entrano in azione le funzioni native del kernel di Linux che permettono l’isolamento dei singoli processi all’interno dello stesso sistema operativo. La tecnologia dei container stabilisce quindi un livello di astrazione, la quale incapsula le applicazioni incluso il file system da sistema alla base, rendendo così possibile l’utilizzo su ogni piattaforma a scelta – a patto che supporti la rispettiva tecnologia container. Ma questo cosa implica per gli utenti?

Gli sviluppatori di software che vogliono approcciarsi a un ambiente di sviluppo basato su cloud per il modello PaaS devono fare riferimento alle tecnologie messe a disposizione dal servizio, come i linguaggi di programmazione e i framework. In confronto, il Container as a Service offre invece agli utenti una piattaforma di programmazione libera sulla quale le applicazioni incapsulate in container possono essere ridimensionate tramite infrastrutture IT eterogenee, a prescindere dalle vostre esigenze e conoscenze in ambito tecnologico.

In sintesi

Il Container as a Service è una forma di virtualizzazione basata su container in cui il run-time system, i tool di orchestrazione e le risorse di infrastruttura alla base vengono tutti messi a disposizione da un provider di cloud computing.

Come funziona CaaS?

La base di Container as a Service è un cluster di computer a disposizione su cloud che può essere parzialmente noleggiato dagli utenti per caricare, generare, gestire centralmente ed eseguire sulla piattaforma cloud le applicazioni basate su container. L’interazione con l’ambiente container basato su cloud avviene o tramite un’interfaccia grafica (GUI) o in alternativa sotto forma di API. I tipi di tecnologie container a disposizione degli utenti si differenziano da provider a provider. Il fulcro di ogni piattaforma CaaS è tuttavia un tool di orchestrazione (conosciuto anche come orchestrator), che permette la gestione di architetture container più complesse.

Le applicazioni container che entrano in gioco negli ambienti produttivi sono di norma costituite da un’interconnessione di diversi container, suddivisi in diversi sistemi fisici e virtuali. In questo caso si parla di un’applicazione multi-container. L’utilizzo intenso di tali applicazioni non è affrontabile manualmente, piuttosto ci si rivolge a dei tool di orchestrazione che organizzano la combinazione dei container eseguiti, permettendo così un utilizzo automatizzato. A questo scopo risultano essenziali le seguenti funzioni:

  • diffusione di container su diversi host;
  • raggruppamento di container in unità logiche;
  • ridimensionamento dei container;
  • load balancing;
  • assegnazione di capacità di archivio;
  • interfaccia di comunicazione tra container;
  • service discovery.

La scelta dell’orchestrator coinvolto nell’utilizzo di CaaS ha una diretta influenza su quali funzioni sono a disposizione degli utenti del servizio cloud. Ad oggi il mercato della virtualizzazione basata su container è dominato da tre tool di orchestrazione: Docker Swarm, Kubernetes e Mesosphere DC/OS.

  • Docker Swarm
    Swarm
    è uno strumento di cluster management e di orchestrazione open source che viene commercializzato da Docker come tool nativo per la gestione di cluster di Docker e il controllo della funzionalità dei container. L’orchestrator è la base per il prodotto On Premises CaaS di Docker, Docker Datacenter (DDC), e permette alle aziende nell’ambito della Docker Enterprise Edition (EE) di realizzare un ambiente Container as a Service gestito autonomamente nel proprio centro di calcolo oppure su un cloud privato (Docker Datacenter on AWS/Azure).

    Il prodotto sviluppato da Docker è noto per la sua facilità di installazione e d’uso, inoltre è strettamente integrato con il run-time system del leader di mercato. Lo strumento di orchestrazione sfrutta le API standard di Docker e offre così compatibilità rispetto ad altri tool di Docker che comunicano attraverso le API di Docker. La gestione di cluster e di container avviene con l’aiuto di classici comandi di Docker.
  • Kubernetes
    Kubernetes
    https://kubernetes.io/ è uno strumento open source per la preparazione automatica, il ridimensionamento e la gestione di applicazioni container su infrastrutture IT diffuse. In origine il tool era stato sviluppato da Google, ma oggi si trova sotto l’ala protettrice della Cloud Native Computing Foundation (CNCF). Al contrario di Swarm, Kubernetes non supporta solamente i container di Docker. Attraverso una Container Runtime Interface (CRI) l’orchestrator mette a disposizione interfacce per diversi run-time system conformi a OCI e basati su hypervisor, nonché per il principale avversario di Docker, rkt di CoreOS. In confronto a Docker Swarm, l’installazione e la configurazione di Kubernetes sono decisamente più faticose.
  • DC/OS
    Per quanto riguarda DC/OS (Data Center Operating System) si tratta di una versione sviluppata del manager di cluster open source Apache Mesos, messo a disposizione da Mesosphere, una start-up della Silicon Valley, come sistema operativo per centri di calcolo con licenza open source. Rispetto a Docker Swarm e Kubernetes, DC/OS si differenzia soprattutto perché il manager di cluster non è limitato solamente alla gestione di applicazioni container. Su richiesta si possono eseguire simultaneamente differenti workload come container, microservice e sistemi di big data.

Nell’articolo riassuntivo dei tool di Docker più popolari ritrovate una descrizione dettagliata degli strumenti di orchestrazione Swarm, Kubernetes e DC/OS.

Una panoramica dei servizi CaaS sul mercato

La tecnologia container è in pieno boom e di conseguenza l’offerta di servizi CaaS prospera. Prestazioni per la virtualizzazione a livello del sistema operativo si trovano nel portfolio di praticamente tutti i provider di cloud pubblici. Anche Amazon, Microsoft e Google, che attualmente sono le figure più importanti sul mercato di CaaS, hanno ampliato le loro piattaforme cloud negli anni passati con una soluzione container basata su Docker. All’inizio del 2018 anche 1&1 ha lanciato nel settore dei CaaS una propria soluzione cluster.

Di seguito vi presentiamo i relativi prodotti mettendoli a confronto:

  • Google Container Engine (GKE)
  • Amazon EC2 Container Service (ECS)
  • Azure Container Service (ACS)
  • 1&1 Container Cluster
N.B.

Per quanto riguarda Docker si tratta di una delle piattaforme container più conosciute sul mercato. Il formato container sviluppato da Docker – ossia uno sviluppo del container di Linux (LXC) – è ampiamente diffuso ed è supportato da tutti i provider CaaS.

Prima di fare la scelta di un servizio CaaS da utilizzare in azienda, dovreste innanzitutto porvi le seguenti domande:

  • Quali strumenti di orchestrazione sono a disposizione?
  • Quali formati di file sono supportati per le applicazioni container?
  • È possibile utilizzare applicazioni multi-container?
  • Come vengono gestiti i cluster per l’utilizzo di container?
  • Quali funzioni di rete e di archiviazione sono supportate?
  • Il provider offre un registry privato per immagini container?
  • Il run-time system a container è integrato bene con gli altri servizi cloud del provider?
  • Quali sistemi di pagamento sono messi a disposizione?

1&1 Container Cluster

Da gennaio 2018 1&1 propone il prodotto di hosting Cluster as a Service (ClaaS) in cooperazione con StackPointCloud (SLC). 1&1 Cluster Hosting è disponibile per i clienti 1&1 dal Cloud Panel e combina la piattaforma IaaS 1&1 con Docker e Kubernetes, le tecnologie container leader del settore.

1&1 Cluster Hosting supporta esclusivamente container nel formato Docker.

ClaaS si rivolge agli sviluppatori e alle aziende informatiche, permettendogli l’uso, la gestione e il ridimensionamento di applicazioni basate su container nei cluster Kubernetes. Le funzioni comprese sono:

  • nodi Managed Cloud con risorse server dedicate;
  • gestione personalizzata di cluster;
  • accesso completo ai container delle applicazioni;
  • orchestrazione personalizzata;
  • supporto tecnico da parte dell’assistenza clienti 1&1 per la creazione e l’utilizzo di cluster container nel Cloud Panel;
  • community 1&1 Cloud, che in caso di domande su Kubernetes o sulle altre soluzioni installate vi fornirà ulteriore aiuto.

I nodi cluster si gestiscono dal Cloud Panel di 1&1. Per l’orchestrazione delle applicazioni container, ClaaS si basa sull’orchestrator Kubernetes che funziona dal tool della riga di comando kubectl; alternativamente si può installare la dashboard di Kubernetes come interfaccia utente. 1&1 vi aiuta durante l’installazione e la gestione dei cluster, mentre non è offerto un supporto diretto per kubectl o la dashboard di Kubernetes.

Dal Cloud Panel di 1&1 gli utenti hanno a disposizione diverse applicazioni di terze parti come soluzioni da installare con un solo clic. Di seguito l’elenco dei software compresi nella piattaforma.

Applicazioni preinstallate Funzione/i
Fabric8 Integrazione continua
Prometheus Monitoraggio per Kubernetes
HAProxy Proxy, load balancing
Sysdig Monitoraggio per Docker, sistema di allarme, risoluzione degli errori
Linkerd Riconoscimento dei servizi, routing, risoluzione degli errori
Autoscaler Ridimensionamento orizzontale
EFK (Elastic Fluentd Kibana) Logging
Helm Gestore di pacchetti per Kubernetes
Netsil Monitoraggio
Calico Networking virtuale e sicurezza di rete
Twistlock Suite per la sicurezza dei container
  Integrazione continua
GitLab Enterprise Integrazione continua
Istio Gestione del traffico dati e controllo degli accessi
Kubeless Autoridimensionamento, routing dell’API, monitoraggio e risoluzione degli errori

Si può integrare il servizio online DockerHub come registry per le immagini Docker.

Per configurare un container dedicato, gli utenti hanno la possibilità di scegliere almeno 3 VM della piattaforma IaaS 1&1 e di decidere se utilizzarle come nodi master o worker a seconda delle proprie esigenze.

Il nodo master è responsabile del controllo, del load balancing e della coordinazione dei container. Le applicazioni dei container vengono eseguite nei pod che si trovano sui nodi worker. Se necessario i container si avviano direttamente sul nodo master.

I nodi dei cluster per un container hosting sono disponibili in 6 categorie di prezzo con diverse prestazioni: M, L, XL, XXL, 3XL e 4XL. Così si va da piccoli nodi cluster con un’unità di elaborazione centrale, 2 GB di RAM e 50 GB di memoria SSD fino a macchine professionali con 12 unità di elaborazione centrale, 32 GB di RAM e 360 GB di memoria SSD. Su tutti i nodi è installato un sistema Linux.

Gli utenti pagano solo per l’effettivo utilizzo delle risorse scelte. Il funzionamento dei container e l’uso delle soluzioni installabili con un solo clic (eccetto Autoscaler) non prevedono costi aggiuntivi. La configurazione scelta viene calcolata al minuto.

N.B.

Vi preghiamo di notare che Autoscaler può essere installato solo durante la creazione di un nuovo cluster. Se è stato attivato l’autoridimensionamento, Kubernetes aggiunge automaticamente un nuovo nodo, nel caso in cui le risorse già a disposizione non siano sufficienti per eseguire l’operazione pianificata. L’utilizzo di nodi aggiunti tramite Autoscaler prevede dei costi aggiuntivi, calcolati sempre al minuto.

Informazioni principali su 1&1 ClaaS  
Disponibile da Gennaio 2018
Orchestrazione Kubernetes
Gestione della piattaforma container Cluster management tramite 1&1 Cloud Panel
  Container management tramite dashboard di Kubernetes o SSH (KubeCTL)
Formato container Container di Docker
Funzioni di rete Networking basato su Kubernetes
Integrazione con sistemi di archiviazione esterni Kubernetes Cloud Backup
Registry Docker Hub
Integrazione con altri servizi cloud del provider (a scelta) 1&1 ClaaS è integrato completamente nella piattaforma IaaS 1&1
Costi Gli utenti di 1&1 Container Cluster pagano solo per i nodi dei cluster. I container comprendono un minimo di 3 VM fino a un massimo di 99.
Vantaggi Svantaggi
✔ Compatibilità completa con Kubernetes ✘ Nessun supporto per kubectl e Kubernetes
✔ Funzionamento container in ambienti cloud pubblici, privati e ibridi  
✔ Elevata portabilità grazie all’uso di soluzioni standard (Docker, Kubernetes)  
✔ Ampia scelta di soluzioni preinstallate di terzi  

Amazon EC2 Container Service (ECS)

Da aprile 2015 la piattaforma di commercio online Amazon mette a disposizione delle soluzioni per la virtualizzazione basate su container nell’ambito della piattaforma di cloud computing AWS (Amazon Web Service): si tratta di Amazon EC2 Container Service (ECS).

Amazon ECS offre agli utenti diverse interfacce che permettono di eseguire applicazioni isolate in container di Docker all’interno di Amazon Elastic Compute Cloud (EC2). Da un punto di vista tecnico il servizio CaaS si basa sulle seguenti risorse cloud:

  • Istanze Amazon EC2 (istanze di Amazon Elastic Compute Cloud): per quanto riguarda Amazon EC2 si tratta delle capacità ridimensionabili di calcolo del servizio di cloud computing di Amazon, che viene noleggiato sotto forma di cosiddette istanze.
  • Amazon S3 (Amazon Simple Storage): Amazon S3 è una piattaforma di storage di oggetti (object storage) basata su cloud per la memorizzazione e il ripristino di qualsiasi volume di dati.
  • Amazon EBS (Amazon Elastic Block Store): Amazon EBS mette a disposizione volumi di storage persistente a blocchi per istanze EC2.
  • Amazon RDS (Amazon Relational Database Service): Amazon RDS è un servizio di database per la gestione dei motori di database relazionali Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle e Microsoft SQL Server.

ECS supporta container esclusivamente in formato Docker.

Su ECS nelle impostazioni standard la gestione di container avviene tramite un orchestrator proprietario che funge da master e comunica con un agente ad ogni nodo del cluster da gestire. In alternativa viene offerto un modulo open source: si tratta di Blox, il quale permette di integrare in ECS anche scheduler sviluppati personalmente, nonché tool di provider terzi come Mesos.

Un punto di forza di Amazon EC2 Container Service è la sua integrazione con altri servizi Amazon come:

  • AWS Identity and Access Management (IAM): AWS Identity and Access Management vi permette di definire i ruoli utente e i gruppi, nonché di gestire l’accesso a risorse AWS per mezzo di permessi.
  • Elastic Load Balancing: per quanto riguarda Elastic Load Balancing si tratta di un load balancer per reti cloud che distribuisce il traffico dell’applicazione in entrata automaticamente tramite più istanze EC2.
  • AWS CloudTrail: AWS CloudTrail è un servizio che monitora tutte le attività degli utenti e l’utilizzo di API all’interno di un cluster. Ciò permette agli utenti di capire i processi e di valutarli in relazione alla gestione delle risorse e dell’analisi di sicurezza.
  • Amazon CloudWatch: CloudWatch, il servizio di Amazon per il monitoraggio di risorse e applicazioni cloud, è a disposizione degli utenti di AWS anche per l’utilizzo di container di applicazioni.
  • AWS CloudFormation: con CloudFormation Amazon offre agli utenti di AWS un servizio che si può definire come un template per la preparazione di risorse AWS. I servizi container si possono descrivere sotto forma di template riutilizzabili in JSON. Ciò comprende il piano di lavoro dell’applicazione incluse le istanze e le capacità di archiviazione indispensabili per l’esecuzione, come anche le loro interazioni con altri servizi AWS.

Nell’ambito di EC2 Container Registry (ECR) Amazon mette a disposizione degli utenti di AWS repository privati di Docker per la gestione centrale di immagini container. Potete gestire l’accesso al registry tramite AWS IAM a livello di risorsa.

Uno svantaggio di Amazon EC2 Container Service è la limitazione alle istanze EC2. Il servizio CaaS di Amazon non offre alcun supporto per le infrastrutture IT al di fuori di AWS, né fisico né virtuale. Scenari di cloud ibridi in cui le applicazioni multi-container vengono eseguite in parte On Premises non sono possibili quanto non lo è una combinazione delle risorse IT di differenti provider di cloud pubblici (multi-cloud).

Questo potrebbe essere collegato al modello di business nel quale Amazon offre il suo servizio di CaaS: Amazon EC2 Container Service è a disposizione tramite AWS principalmente a titolo gratuito. Gli utenti pagano esclusivamente per la fornitura dell’infrastruttura cloud, ad esempio per un cluster di istanze EC2 che funge da base per l’utilizzo di applicazioni container.

Amazon EC2 Container Service in dettaglio

Disponibile da

Aprile 2015

Orchestrazione

Strumento di orchestrazione proprietario

Possibilità di integrare scheduler sviluppati personalmente e tool di provider terzi tramite Blox

Gestione della piattaforma container

GUI di ECS e CLI

Formato container

Container di Docker

Ad oggi i container di Windows sono supportati solamente con uno status beta (si sconsiglia di utilizzarli su sistemi produttivi)

Funzioni di rete

Non è supportato l’overlay networking tramite Libnetwork

Integrazione con sistemi di archiviazione esterni

Supporto di volume Docker (con driver limitati)

 

Registry

Docker Registry e Amazon EC2 Container Registry

Integrazione con altri servizi cloud (a scelta)

AWS IAM

Elastic Load Balancing

AWS CloudTrail

Amazon CloudWatch

AWS CloudFormation

Costi

ECS è un servizio gratuito. Gli utenti pagano esclusivamente per le risorse prese in considerazione delle piattaforme cloud AWS alla base.

Il seguente video in inglese spiega l’utilizzo di Amazon EC2 Container Service con un tutorial di 5 minuti.

Vantaggi Svantaggi  
✔ Integrazione completa con altri prodotti AWS ✘ Il deployment di container si limita alle istanze di AmazonEC2  
  ✘ Orchestrator proprietario: altri tool open source di utilizzo comune come Kubernetes non sono supportati  

Google Container Engine (GKE)

Anche Google ha integrato un servizio container hostato sul cloud pubblico: si tratta di Google Container Engine (GKE). Componente fondamentale di questo servizio CaaS è il tool di orchestrazione Kubernetes.

GKE attinge a risorse di Google Compute Engine (GCE) e permette agli utenti di eseguire applicazioni basate su container sui cluster di Google Cloud Platform (GCP). Sull’infrastruttura del cloud di Google gli utenti non sono affatto limitati dal GKE: il Cluster Federation System dell’orchestrator Kubernetes fa sì che si possano sintetizzare risorse di diversi cluster di computer in una federazione di calcolo logica e in caso di necessità permette anche di realizzare scenari di cloud ibridi e multi-cloud.

Ogni cluster realizzato con l’aiuto di GKE è costituito da un master di Kubernetes, sul quale viene eseguito il server API di Kubernetes, e da un numero a scelta di nodi worker, i quali servono le richieste REST del server API ed eseguono i servizi necessari per il supporto di container di Docker.

Mentre il nodo master sorveglia la quantità di risorse coinvolte e lo stato del cluster, le applicazioni containerizzate vengono eseguite sul nodo worker. Se un nodo worker salta, allora il master distribuisce i compiti necessari per l’esecuzione agli altri nodi.

Anche GKE supporta il formato container di Docker, ampiamente diffuso. Per la preparazione di immagini Docker gli utenti hanno a disposizione un registry di container privato e una sintassi basata su JSON permette di definire servizi container come template.

L’integrazione di Kubernetes su GKE offre agli utenti le seguenti funzioni per l’orchestrazione di applicazioni container:

  • Automatic Binpacking: Kubernetes posiziona automaticamente i container sulla base di limitazioni e richieste di risorse in modo tale che il cluster sia caricato in maniera equilibrata. Questo impedisce che sia compromessa la disponibilità di applicazioni container.
  • Health check con funzione di riparazione automatica: grazie a dei controlli dello stato automatici, Kubernetes assicura che tutti i nodi e container funzionino perfettamente. I nodi o i container che non reagiscono vengono terminati e sostituiti con dei nuovi.
  • Ridimensionamento orizzontale: con Kubernetes potete ridimensionare le applicazioni a piacere, sia manualmente con la riga di comando, sia con l’interfaccia utente grafica oppure ancora automaticamente sulla base dell’utilizzo di CPU.
  • Service discovery e load balancing: Kubernetes offre due metodi per il service discovery. I servizi possono essere rintracciati tramite variabili di ambiente e record DNS. Si può realizzare un load balancing tra diversi container attraverso indirizzi IP e nomi DNS.
  • Orchestrazione dell’archivio: Kubernetes permette il montaggio automatico di diversi sistemi di archiviazione, non importa che si tratti di archivi locali, cloud pubblici (ad esempio attraverso GCP o AWS) oppure di sistemi di archiviazione di rete come NFS, iSCSI, Gluster, Ceph o Flocker.

In maniera analoga a ECS, su AWS GKE è integrato direttamente nella piattaforma cloud di Google, cosicché gli utenti del motore container abbiano a disposizione diverse funzioni del cloud pubblico oltre a quelle dell’orchestrator:

  • Identity and Access Management: l’IAM di GKE è realizzato con l’aiuto degli account di Google e supporta i permessi basati sui ruoli degli utenti.
  • Stackdriver Monitoring: il tool di Google per il monitoraggio informa gli utenti riguardo all’andamento, la durata dell’attività e lo stato delle applicazioni cloud. Inoltre Stackdriver raccoglie metriche di monitoraggio, risultati e metadati, e li dispone su una bacheca per una chiara comprensione. Come fonte di dati lo strumento supporta la Google Cloud Platform, Amazon Web Services e svariate applicazioni tra cui Cassandra, Nginx, Apache HTTP Server ed Elasticsearch.
  • Stackdriver Logging: il tool di Google per il log permette agli utenti la memorizzazione, il monitoraggio e l’analisi di file di log e di eventi. Stackdriver Logging supporta la Google Cloud Platform e Amazon Web Services.
  • Container Builder: con il Container Builder Google mette a disposizione uno strumento per la creazione di immagini Docker direttamente sul cloud. Il codice di esecuzione relativo deve essere caricato esclusivamente sul Google Cloud Storage.

Per quanto concerne la concezione dei costi del servizio CaaS, Google segue una strada differente da Amazon. Gli utenti possono utilizzare gratuitamente un container management di cluster avente fino a cinque istanze di Compute Engine (nodi). Gli unici costi di cui dovranno prendersi carico sono quelli relativi alla fornitura delle risorse cloud (CPU, archivio, e così via). Se desiderate eseguire container su cluster più grandi con sei o più istanze, Google aumenta il costo per il motore container: il calcolo finale viene considerato in modo forfettario per singolo cluster su base oraria.

Informazioni principali su Google Container Engine

Disponibile da

Agosto 2015

Orchestrazione

Kubernetes

 

Gestione della piattaforma container

Cluster management attraverso Google Cloud

Container management attraverso Kubernetes UI

Formato container

Container di Docker

Funzioni di rete

Networking basato su di Kubernetes

Integrazione con sistemi di archiviazione esterni

Kubernetes Persistent Volume

Registry

Docker Registry e Google Container Registry

Integrazione con altri servizi cloud del provider (a scelta)

Cloud IAM

Stackdriver Monitoring

Stackdriver Logging

Container Builder

Costi

Utilizzo dei container tramite GKE su cluster standard fino a 5 nodi: gratuito.

Utilizzo dei container tramite GKE su cluster standard con 6 o più nodi: calcolo forfettario per singolo cluster all’ora.

Nel video seguente Dan Maik, product manager di Google, offre una panoramica sul container deployment con GKE e Kubernetes.

Vantaggi Svantaggi  
✔ Integrazione completa con altri prodotti Google ✘ Google applica un’ulteriore tassa di utilizzo per i motori container che si aggiunge ai costi per le istanze sui cluster a partire da 6 nodi  
✔ Possibilità di utilizzare container deployment su hybrid cloud e multi-cloud    

Microsoft Azure Container Service (ACS)

Azure Container Service (ACS) è un ambiente di hosting ottimizzato per Azure, la piattaforma di cloud computing di Microsoft, che permette agli utenti di sviluppare applicazioni basate su container e di renderle disponibili in cluster di computer ridimensionabili. ACS si basa su una versione ottimizzata per Azure di tool container open source e rende possibile l’utilizzo di container di Linux in formato Docker. Ad oggi i container di Windows sono supportati solamente nella versione di anteprima.

Componente centrale del servizio CaaS di Microsoft è Azure Container Engine, il cui codice sorgente è a disposizione su GitHub con licenza open source. Azure Container Engine funge da generatore di template che crea modelli pronti per Azure Resource Manager (ARM). Questi possono essere gestiti tramite un’API con uno dei seguenti strumenti di orchestrazione: Docker Swarm, DC/OS e Kubernetes (a partire da febbraio 2017).

Quali sono le funzioni disponibili per gli utenti di ACS durante l’utilizzo di applicazioni containerizzate sul cloud di Azure, dipende per prima cosa dalla scelta dell’orchestrator.

Nell’ambito di Azure Container Service il cluster manager DC/OS di Mesosphere opera in combinazione con la piattaforma di orchestrazione Marathon. Una simile struttura offre agli utenti la seguente varietà di funzioni:

  • Interfaccia utente basata sul web: la gestione di cluster a container avviene in caso di necessità tramite l’interfaccia utente basata sul web dell’orchestrator Marathon.
  • Alta disponibilità: Marathon viene eseguito come cluster attivo/passivo. Per ogni nodo attivo c’è un nodo passivo completamente ridondante che in caso di malfunzionamento del nodo attivo si prende carico dei suoi compiti.
  • Service discovery e load balancing: con Marathon-LB DC/OS offre un load balancer basato su HAProxy e con DNS di Mesos un tool di service discovery basato su DNS.
  • Health checks: si può controllare lo stato delle applicazioni con Marathon tramite HTTP o TCP. Sono inoltre disponibili delle funzioni di monitoraggio tramite una REST API, la riga di comando oppure l’interfaccia utente basata sul web.
  • Metriche: tramite una API, Marathon emette metriche dettagliate in formato JSON che su richiesta possono essere inoltrate a tool di monitoraggio come Graphite, statsD oppure Datadog.
  • Servizio di notifiche: gli utenti che utilizzano DC/OS con Marathon sul cloud di Azure hanno la possibilità di riservare un endpoint HTTP per comunicazioni relative a eventi.
  • Gruppi di applicazioni: su richiesta è possibile raggruppare i container in cosiddetti “pods” che sono gestibili come unità chiuse in sé stesse.
  • Deployment basato su regole: grazie alle limitazioni si possono definire con esattezza dove e come vanno distribuite le applicazioni nel cluster.

La versione Swarm di Docker ACS si basa sullo stack di Docker, per cui operano le stesse tecnologie open source come per Dockers Universal Control Plane (un componente di base del Docker Datacenter). Implementato in Azure Container Service, Docker Swarm offre le seguenti feature per l’orchestrazione e il ridimensionamento di applicazioni container:

  • Docker Compose: la soluzione di Docker per applicazioni multi-container permette di collegare più container tra loro e di eseguirli con un unico comando centrale. In questo modo viene definita una quantità di container a piacere, incluse tutte le dipendenze, in un file di controllo sulla base del linguaggio di markup YAML.
  • Monitoraggio tramite riga di comando: Docker CLI (Command Line Interface) e il tool multi-container Docker Compose permettono la gestione diretta di cluster container tramite riga di comando.
  • REST API: Docker Remote API offre l’accesso a vari strumenti di provider terzi dell’ambiente Docker.
  • Deployment basato su regole: la distribuzione di container di Docker all’interno del cluster è gestibile tramite label e limitazioni.
  • Service discovery: Docker Swarm offre agli utenti diverse funzioni di service discovery.

Da febbraio 2017 gli utenti ACS possono inoltre attingere all’orchestrator Kubernetes per automatizzare la gestione di applicazioni container, il deployment e il ridimensionamento nei cluster di Azure. Anche come implementazione ACS Kubernetes offre tutte le funzioni base che abbiamo già illustrato nel paragrafo relativo a Google Container Engine.

Anche ACS è integrato all’interno del servizio cloud Azure:

  • Azure Portal e Azure CLI 2.0: gli utenti configurano i cluster container tramite il portale Azure – l’interfaccia utente centrale della piattaforma cloud – oppure la Command Line Interface Azure CLI 2.0.
  • Azure Container Registry: con Azure Container Registry anche gli utenti Microsoft hanno a disposizione una repository privata per la creazione di immagini Docker.
  • Operations Management Suite (OMS): Monitoraggio e funzioni di log per i servizi container sono resi disponibili da Microsoft Operations Management Suite (OMS).
  • Azure Stack: con l’aiuto dell’estensione Azure Stack è possibile utilizzare container su ambienti cloud ibridi.

Oltre a ciò Microsoft ha ampliato ACS con funzioni CI/CD (Continuous Integration and Deployment) per applicazioni multi-container che sono state sviluppate con Visual Studio, Visual Studio Team Services o il tool open source Visual Studio Code.

L’Identity and Access Management su Azure viene regolato tramite Active Directory, le cui funzioni base sono a disposizione degli utenti a titolo gratuito fino a un limite di 500.000 oggetti indicizzati. Come già per Amazon ECS, anche in Azure Container Service non ci sono costi per l’utilizzo di tool container. I costi sono applicati solamente per l’utilizzo dell’infrastruttura alla base.

Una panoramica di Microsoft Azure Container Service

Disponibile da

Aprile 2016

Orchestrazione

Tool open source a scelta:

- Mesosphere DC/OS

- Docker Swarm

- Kubernetes (a partire da febbraio 2017)

Gestione della piattaforma container

Cluster management tramite Azure Portal o Azure CLI 2.0

Container management tramite interfaccia nativa dell’orchestrator scelto:

- Marathon UI

- Docker CLI

- Kubernetes UI

Formato container

Container di Docker

I container di Windows sono supportati in una versione di anteprima

Funzioni di rete

Overlay networking tramite libnetwork e Container Network Model (CNM)

Integrazione con sistemi di archiviazione esterni

Docker volume driver tramite Azure File Storage

Registry

Docker Registry e Azure Container Registry

Integrazione con altri servizi cloud del provider (a scelta)

Azure Portal

Azure Resource Manager (ARM)

Azure Active Directory

Azure Stack

Microsoft Operations Management Suite (OMS)

Costi

L’utilizzo di ACS è gratuito. Gli utenti sono invitati a pagare esclusivamente per le risorse utilizzate della piattaforma di cloud computing Azure.

Il seguente video dimostra l’utilizzo dei container di Docker sulla piattaforma Azure.

Vantaggi Svantaggi  
✔ ACS è completamente integrato con la piattaforma cloud Azure ✘ Non è sul mercato così a lungo come la concorrenza  
✔ ACS supporta tutti i tool di orchestrazione standard: Docker Swarm, Kubernetes e DC/OS (Marathon)    
✔ È possibile utilizzare i container su ambienti cloud ibridi tramite Azure Stack    

Container as a Service: provider a confronto

Per facilitare il confronto tra i provider di CaaS presentati, abbiamo voluto inserirli nella seguente tabella, che prende in considerazione le usuali caratteristiche fondamentali tenute in considerazione dagli utenti.

Criterio di scelta

Amazon EC2 Container Service (ECS)

Google Container Engine (GKE)

Microsoft Azure Container Service (ACS)

1&1 Container Cluster

 

General Availability (GA)

Aprile 2015

Agosto 2015

Aprile 2016

Gennaio 2018

Basi tecniche (performance del computer)

Istanze EC2

Nodi e cluster di Google Compute Engine (GCE)

Macchine virtuali e gruppi di ridimensionamento per macchine virtuali

VM della piattaforma IaaS 1&1

Archivio di oggetti

Amazon S3 (Simple Storage Service)

Google Cloud Storage

Blob Storage

No

Tool standard per l’orchestrazione

Tool di gestione proprietario

 

Kubernetes

Tool open source a scelta:

- Mesosphere DC/OS

- Docker Swarm

- Kubernetes

Kubernetes

Gestione della piattaforma container

ECS-GUI e CLI

Cluster management tramite Google Cloud

Container management tramite bacheca di Kubernetes

Cluster management tramite Azure

Container management tramite tool di Docker

Tramite 1&1 Cloud Panel

Formato container per sistemi produttivi

Container di Docker

Container di Docker

Container di Docker

Container di Docker

Funzioni di rete

Non viene supportato l’overlay networking tramite libnetwork

 

Networking basato su Kubernetes

Overlay networking tramite libnetwork e Container Network Model (CNM)

Networking basato su Kubernetes

Integrazione con sistemi di archiviazione esterni

Supporto di volume di Docker (con driver limitati)

Kubernetes Persistent Volume

Docker Volume Driver tramite Azure File Storage

Kubernetes Cloud Backup

Registry

Docker Registry

Amazon EC2 Container Registry

Docker Registry

Google Container Registry

Docker Registry

Azure Container Registry

Docker Registry

Identity and Access Management

No

Supporto cloud ibrido

No

Logging e monitoraggio

Ridimensionamento automatico

Integrazione con altri servizi cloud

Elastic Load Balancing

Elastic Block Store

Virtual Private Cloud

AWS IAM

AWS CloudTrail

AWS CloudFormation

Cloud IAM

Stackdriver Monitoring

Stackdriver Logging

Container Builder

Azure-Portal

Azure Resource Manager (ARM)

Azure Active Directory

Azure Stack

Microsoft Operations Management Suite (OMS)

Integrazione nella piattaforma IaaS 1&1

Controllo centralizzato tramite 1&1 Cloud Panel

Costi

ECS è un servizio gratuito. Gli utenti pagano esclusivamente per le risorse della piattaforma cloud AWS che hanno utilizzato.

L’utilizzo di container su cluster standard fino a cinque nodi è gratuito.

Per l’utilizzo di container su cluster standard con sei o più nodi si effettua un calcolo forfettario per ogni cluster all’ora.

L’utilizzo di ACS è gratuito. Gli utenti pagano esclusivamente per le risorse della piattaforma di cloud computing Azure che hanno utilizzato.

L’utilizzo dei container è gratis.

Gli utenti di 1&1 Container Cluster pagano esclusivamente per le risorse della piattaforma 1&1 Cloud che hanno utilizzato.

CaaS vs soluzioni On Premises

Come alternativa al modello CaaS c’è la possibilità di avere i tool container desiderati in forma di software On Premises, ovvero su macchina locale. Entrambe le soluzioni hanno i loro pregi e difetti.

I dubbi nei confronti dei servizi di cloud computing sono di norma relativi alla sicurezza e in effetti le aziende con un ambiente container nel proprio centro di calcolo dispongono del massimo controllo possibile. Inoltre l’utilizzo di questo sistema implica anche la massima flessibilità in termini di scelta di componenti hardware e software (server, sistemi operativi, run-time system e strumenti per la gestione) come anche la consapevolezza che tutti i dati vengano elaborati e archiviati solo entro i confini dell’utilizzo dei container all’interno della propria azienda.

Tuttavia questo incremento di libertà decisionale va inevitabilmente di pari passo con un maggiore investimento di energie e costi, per quanto riguarda la preparazione e la manutenzione dell’ambiente container. Le installazioni complicate da effettuare sul proprio centro di elaborazione dati richiedono spesso elevati investimenti. È quindi da valutare se ne valga effettivamente la pena.

Un ambiente container basato su cloud permette invece di mettere a disposizione nuove applicazioni e funzioni di software in maniera veloce ed economica. Nell’ambito del modello CaaS, gli utenti pagano solamente le performance e le risorse che effettivamente utilizzano e non è necessario pagare in anticipo. Questo va soprattutto a vantaggio di imprese di dimensioni più ridotte, start-up, fondatori e lavoratori autonomi, che devono realizzare i propri progetti con un budget limitato.

Come altri servizi cloud, CaaS è caratterizzato dal trasferimento dell’infrastruttura IT a provider di servizi specializzati che fanno sì che la base tecnica sia sempre aggiornata e che funzioni in maniera ineccepibile. Assieme a un metodo di pagamento basato sull’utilizzo, Container as a Service si rivolge così alle aziende con velocità elevate di sviluppo e innovazione. Le aziende che scelgono una soluzione On Premises rinunciano alla flessibilità e alla possibilità di ridimensionamento messe a disposizione dei clienti dai loro provider cloud.

Oltre a ciò è una falsa credenza quella che i file all’interno del proprio centro di calcolo siano più al sicuro rispetto a un cloud. Di solito le piccole e medie imprese, infatti, non hanno la possibilità di disporre di un’infrastruttura IT che possa tenere il passo in termini di disponibilità, sicurezza dei dati e compliance con i centri di calcolo di un provider autorevole e conosciuto di un cloud pubblico.

Vantaggi e svantaggi del modello CaaS

Vantaggi Svantaggi  
✔ Dispendio modesto per installazione, configurazione e utilizzo ✘ A seconda del provider esistono limitazioni rispetto alle tecnologie disponibili  
✔ Manutenzione delle basi tecniche a carico del provider dell’hosting ✘ Il trasferimento di dati sul cloud comporta un rischio in termini di sicurezza  
✔ Calcolo dei costi a seconda dell’utilizzo delle risorse    
✔ Possibilità di ridimensionare la varietà delle performance    
✔ Picchi di carico improvvisi vengono smorzati    

Vantaggi e svantaggi delle piattaforme self-hosted

Vantaggi Svantaggi  
✔ Controllo totale sulla struttura tecnica ✘ Costi di investimento elevati  
✔ Tutti i dati rimangono all’interno dell’azienda ✘ Grande dispendio per installazione, configurazione e manutenzione  
  ✘ Richiede una comprensione di base delle tecnologie container, di hardware e di amministrazione