14 Strumenti di orchestrazione di contenitori per DevOps

Parliamo di alcuni dei popolari strumenti di orchestrazione dei contenitori disponibili sul mercato.

Che cos’è un’orchestrazione di contenitori?

Le piattaforme container come Docker sono molto popolari in questi giorni per creare pacchetti di applicazioni basate su un’architettura di microservizi. I container possono essere resi altamente scalabili, che possono essere creati su richiesta. Anche se questo va bene per alcuni contenitori, ma immagina di averne centinaia.

Diventa estremamente difficile gestire il ciclo di vita dei container e la sua gestione quando i numeri aumentano dinamicamente con la domanda.

L’orchestrazione dei container risolve il problema automatizzando la pianificazione, la distribuzione, la scalabilità, il bilanciamento del carico, la disponibilità e il collegamento in rete dei container. L’orchestrazione dei container è l’automazione e la gestione del ciclo di vita di container e servizi.

È un processo di gestione e organizzazione di più contenitori e architettura di microservizi su larga scala.

Fortunatamente, sul mercato sono disponibili molti strumenti di orchestrazione dei contenitori.

Esploriamoli!

Kubernetes

Hai indovinato, vero?

Kubernetes è una piattaforma open source originariamente progettata da Google e ora gestita dalla Cloud Native Computing Foundation. Kubernetes supporta sia la configurazione dichiarativa che l’automazione. Può aiutare ad automatizzare la distribuzione, la scalabilità e la gestione del carico di lavoro e dei servizi containerizzati.

Immagine di Kubernetes.io

L’API Kubernetes aiuta a stabilire la comunicazione tra utenti, componenti del cluster e componenti esterni di terze parti. Il piano di controllo e i nodi di Kubernetes vengono eseguiti su un gruppo di nodi che insieme formano il cluster. Il carico di lavoro dell’applicazione è costituito da uno o più pod che vengono eseguiti sui nodi di lavoro. Il piano di controllo gestisce Pod e nodi di lavoro.

Aziende come Babylon, Booking.com, AppDirect utilizzano ampiamente Kubernetes.

Caratteristiche

  • Scoperta dei servizi e bilanciamento del carico
  • Orchestrazione dell’archiviazione
  • Rollout e rollback automatizzati
  • Ridimensionamento orizzontale
  • Segreti e gestione della configurazione
  • Autoguarigione
  • Esecuzione in batch
  • IPv4/IPv6 dual stack
  • Imballaggio automatico dei contenitori

Vuoi imparare Kubernetes? Dai un’occhiata a queste risorse di apprendimento.

OpenShift

Offerte Redhat OpenShift Container Platform as a Service (PaaS). Aiuta nell’automazione delle applicazioni su risorse sicure e scalabili in ambienti cloud ibridi. Fornisce piattaforme di livello aziendale per la creazione, la distribuzione e la gestione di applicazioni containerizzate.

Immagine di Openshift

È basato sul motore Redhat Enterprise Linux e Kubernetes. Openshift ha varie funzionalità per gestire i cluster tramite UI e CLI. Redhat fornisce Openshift in altre due varianti,

  • Openshift Online – offerto come software as a service (SaaS)
  • OpenShift Dedicated – offerto come servizi gestiti

Openshift Origin (Origin Community Distribution) è un progetto di comunità upstream open source utilizzato in OpenShift Container Platform, Openshift Online e OpenShift Dedicated.

Nomade

Nomade è un agente di orchestrazione del carico di lavoro semplice, flessibile e facile da usare per distribuire e gestire container e applicazioni non containerizzate su scala locale e cloud. Nomad viene eseguito come un singolo binario con un ingombro di risorse ridotto (35 MB) ed è supportato su macOS, Windows e Linux.

Gli sviluppatori utilizzano l’infrastruttura dichiarativa come codice (IaC) per distribuire le proprie applicazioni e definire come un’applicazione deve essere distribuita. Nomad recupera automaticamente le applicazioni dagli errori.

Immagine di Nomad

Nomad Orchestra applicazioni di qualsiasi tipo (non solo container). Fornisce supporto di prima classe per Docker, Windows, Java, VM e altro ancora.

Caratteristiche

  • Semplice e affidabile
  • Modernizza le applicazioni legacy senza riscrivere
  • Federazione facile su larga scala
  • Scalabilità comprovata
  • Multi-Cloud con facilità
  • Integrazioni native con Terraform, Console e Vault

Sciame Docker

Sciame Docker utilizza un modello dichiarativo. È possibile definire lo stato desiderato del servizio e Docker manterrà tale stato. Docker Enterprise Edition ha integrato Kubernetes con Swarm. Docker offre ora flessibilità nella scelta del motore di orchestrazione. La CLI del motore Docker viene utilizzata per creare uno sciame di motori Docker in cui è possibile distribuire i servizi applicativi.

Immagine di Docker

I comandi Docker vengono utilizzati per interagire con il cluster. Le macchine che si uniscono al cluster sono note come nodi e il gestore Swarm gestisce le attività del cluster.

Docker Swarm è costituito da due componenti principali:

  • Manager: i nodi manager assegnano attività ai nodi di lavoro nello sciame. Un leader viene eletto sulla base di un algoritmo di consenso Raft. Il leader gestisce tutte le decisioni relative alla gestione dello sciame e all’orchestrazione delle attività per lo sciame.
  • Nodo di lavoro: il nodo di lavoro riceve attività dal nodo manager e le esegue.

Caratteristiche

  • Gestione dei cluster integrata con Docker Engine
  • Progettazione decentralizzata
  • Modello di servizio dichiarativo
  • Ridimensionamento
  • Riconciliazione di stato desiderata
  • Rete multi-host
  • Scoperta del servizio
  • Bilancio del carico
  • Sicuro per impostazione predefinita
  • Aggiornamenti continui

Docker Componi

Docker Componi serve per definire ed eseguire applicazioni multi-container che funzionano insieme. Docker-compose descrive gruppi di servizi interconnessi che condividono dipendenze software e sono orchestrati e ridimensionati insieme.

Puoi utilizzare un file YAML (dockerfile) per configurare i servizi della tua applicazione. Quindi, con un comando docker-compose up, crei e avvii tutti i servizi dalla tua configurazione.

Un docker-compose.yml assomiglia a questo:

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

Puoi usare Docker Compose per inserire il codice dell’app in diversi servizi in esecuzione indipendente che comunicano tramite una rete interna. Lo strumento fornisce CLI per la gestione dell’intero ciclo di vita delle applicazioni. Docker Compose si è tradizionalmente concentrato sui flussi di lavoro di sviluppo e test, ma ora si stanno concentrando su funzionalità più orientate alla produzione.

Il Docker Engine può essere un’istanza autonoma fornita con Docker Machine o un intero cluster Docker Swarm.

Caratteristiche

  • Più ambienti isolati su un unico host
  • Conserva i dati sul volume quando vengono creati i contenitori
  • Ricrea solo i contenitori che sono stati modificati
  • Variabili e spostamento di una composizione tra ambienti

Mini Kube

Minikube consente agli utenti di eseguire Kubernetes in locale. Con Minikube, puoi testare le applicazioni localmente all’interno di un cluster Kubernetes a nodo singolo sul tuo personal computer. Minikube ha integrato il supporto per il dashboard di Kubernetes.

Minikube esegue l’ultima versione stabile di Kubernetes e supporta le seguenti funzionalità.

  • Bilancio del carico
  • Multi-cluster
  • Volumi persistenti
  • NodePort
  • ConfigMappe e Segreti
  • Runtime del container: Docker, CRI-O e containerizzato
  • Abilitazione CNI (Container Network Interface)

Maratona

Maratona è per Apache Mesos che ha la capacità di orchestrare app e framework.

Apache Mesos è un gestore di cluster open source. Mesos è un progetto di Apache che ha la capacità di eseguire carichi di lavoro sia containerizzati che non containerizzati. I componenti principali in un cluster Mesos sono Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks si coordinano con il master per pianificare le attività sui nodi agent. Gli utenti interagiscono con il framework Marathon per pianificare i lavori.

Lo scheduler Marathon utilizza ZooKeeper per individuare il master corrente per inviare le attività. Lo scheduler Marathon e il master Mesos hanno un master secondario in esecuzione per garantire un’elevata disponibilità. I client interagiscono con Marathon utilizzando l’API REST.

Caratteristiche

  • Alta disponibilità
  • App con stato
  • Interfaccia utente bella e potente
  • Vincoli
  • Scoperta del servizio e bilanciamento del carico
  • Controlli sanitari
  • Abbonamento Evento
  • Metrica
  • API REST

Cloudify

Cloudify è uno strumento di orchestrazione cloud open source per l’automazione della distribuzione e la gestione del ciclo di vita di contenitori e microservizi. Fornisce funzionalità come cluster su richiesta, riparazione automatica e ridimensionamento a livello di infrastruttura. Cloudify può gestire l’infrastruttura dei container e orchestrare i servizi eseguiti su piattaforme container.

Può essere facilmente integrato con Docker e gestori di container basati su Docker, inclusi i seguenti.

  • Docker
  • Sciame Docker
  • Docker Componi
  • Kubernetes
  • Apache Meso

Cloudify può aiutare a creare, correggere, ridimensionare e demolire i cluster di contenitori. L’orchestrazione dei container è fondamentale per fornire un’infrastruttura scalabile e ad alta disponibilità su cui possono essere eseguiti i gestori di container. Cloudify offre la possibilità di orchestrare servizi eterogenei su più piattaforme. Puoi distribuire le applicazioni utilizzando la CLI e Cloudify Manager.

Allevatore

Allevatore è una piattaforma open source che utilizza l’orchestrazione di container nota come cattle. Ti consente di sfruttare i servizi di orchestrazione come Kubernetes, Swarm, Mesos. Rancher fornisce il software necessario per gestire i container in modo che le organizzazioni non debbano creare piattaforme di servizi container da zero utilizzando un insieme distinto di tecnologie open source.

Rancher 2.x consente la gestione dei cluster Kubernetes in esecuzione sui provider specificati dal cliente.

Iniziare con Rancher è un processo in due fasi.

Prepara un host Linux

Prepara un host Linux con Ubuntu 16.04 o 18.04 a 64 bit (o un’altra distribuzione Linux supportata e almeno 4 GB di memoria. Installa una versione supportata di Docker sull’host.

Avvia il server

Per installare ed eseguire Rancher, esegui il seguente comando Docker sul tuo host:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

L’interfaccia utente del rancher consente la gestione di migliaia di cluster e nodi Kubernetes.

Nave cargo

Il containership consente l’implementazione e la gestione dell’infrastruttura Kubernetes multi-cloud. È flessibile per operare negli ambienti pubblici, cloud privati ​​e on-premise da un unico strumento. Consente il provisioning, la gestione e il monitoraggio dei tuoi cluster Kubernetes su tutti i principali fornitori di servizi cloud.

Containership è costruito utilizzando strumenti cloud-native, come Terraform per il provisioning, Prometheus per il monitoraggio e Calico per il networking e la gestione delle policy. È costruito su Kubernetes vaniglia. La piattaforma Containership offre un dashboard intuitivo e una potente API REST per l’automazione complessa.

Caratteristiche

  • Dashboard multicloud
  • Registri di controllo
  • Supporto per le istanze GPU
  • Aggiornamenti senza interruzioni
  • Master programmabili
  • Metriche integrate
  • Registrazione in tempo reale
  • Implementazioni senza tempi di inattività
  • Supporto per l’archiviazione persistente
  • Supporto al registro privato
  • Scalabilità automatica del carico di lavoro
  • Gestione delle chiavi SSH

AZK

AZK è uno strumento di orchestrazione open source per ambienti di sviluppo tramite un file manifest (Azkfile.js), che aiuta gli sviluppatori a installare, configurare ed eseguire strumenti comunemente usati per lo sviluppo di applicazioni Web con diverse tecnologie open source.

AZK utilizza container invece di macchine virtuali. I container sono come macchine virtuali, con prestazioni migliori e un minor consumo di risorse fisiche.

I file Azkfile.js possono essere riutilizzati per aggiungere nuovi componenti o crearne di nuovi da zero. Può essere condiviso, il che assicura la totale parità tra gli ambienti di sviluppo nelle macchine di diversi programmatori e riduce le possibilità di bug durante la distribuzione.

GKE

GKE fornisce una soluzione completamente gestita per l’orchestrazione delle applicazioni container su Google Cloud Platform. I cluster GKE sono alimentati da Kubernetes. Puoi interagire con i cluster utilizzando Kubernetes CLI. I comandi Kubernetes possono essere utilizzati per distribuire e gestire applicazioni, eseguire attività di amministrazione, impostare criteri e monitorare lo stato dei carichi di lavoro distribuiti.

Immagine di GCP

Funzionalità di gestione avanzata di Google Cloud disponibili anche con cluster GKE come bilanciamento del carico di Google Cloud, pool di nodi, ridimensionamento automatico dei nodi, aggiornamenti automatici, riparazione automatica dei nodi, registrazione e monitoraggio con la suite operativa di Google Cloud.

Google Cloud fornisce strumenti CI/CD per aiutarti a creare e servire contenitori di applicazioni. Puoi utilizzare Cloud Build per creare immagini di container (come Docker) da una varietà di repository di codice sorgente e Container Registry per archiviare le tue immagini di container.

GKE è una soluzione pronta per l’azienda con modelli di distribuzione predefiniti.

Interessato a imparare GKE? Controlla questo corso per principianti.

AKS

AKS è un servizio Kubernetes completamente gestito offerto da Azure, che offre Kubernetes serverless, sicurezza e governance. AKS gestisce il tuo cluster Kubernetes e ti consente di distribuire facilmente applicazioni containerizzate. AKS configura automaticamente tutti i master e i nodi Kubernetes. Devi solo gestire e mantenere i nodi dell’agente.

Immagine di Azure

AKS è gratuito; paghi solo per i nodi agente all’interno del tuo cluster e non per i master. È possibile creare un cluster AKS nel portale di Azure o a livello di codice. Azure supporta anche funzionalità aggiuntive come reti avanzate, integrazione di Azure Active Directory e monitoraggio tramite monitoraggio di Azure.

AKS supporta anche i contenitori di Windows Server. Il cluster e le prestazioni delle applicazioni distribuite possono essere monitorati da Monitoraggio di Azure. I log vengono archiviati in un’area di lavoro di Azure Log Analytics.

AKS è stato certificato come conforme a Kubernetes.

AWS EKS

AWS EKS è un servizio Kubernetes completamente gestito. AWS ti consente di eseguire il tuo cluster EKS utilizzando AWS Fragrate, che è un calcolo serverless per i container. La fragranza elimina la necessità di fornire e gestire i server, consentendo il pagamento per risorsa per applicazione.

AWS consente l’utilizzo di funzionalità aggiuntive con EKS come Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups e Access Management (IAM), applicazioni di monitoraggio, scalabilità e bilanciamento del carico. EKS si integra con AWS App mesh e offre un’esperienza nativa Kubernetes. EKS esegue l’ultimo Kubernetes ed è conforme a Kubernetes certificato.

Conclusione

Alla fine, spero che l’elenco sopra abbia fornito una corretta comprensione dei vari strumenti di orchestrazione dei contenitori e ora, a seconda del caso d’uso, sarà più facile optare per quello migliore.

Quindi, scopri il software di gestione Kubernetes.