Sebbene vi siano differenze nelle metodologie e nelle capacità tra gli strumenti, l'orchestrazione di contenitori è essenzialmente un processo in tre fasi (o ciclo, quando è parte di una pipeline agile o DevOps).
La maggior parte degli strumenti di orchestrazione dei container supporta un modello di configurazione dichiarativa: uno sviluppatore scrive un file di configurazione (in YAML o JSON a seconda dello strumento) che definisce uno stato di configurazione desiderato. Lo strumento di orchestrazione che esegue il file utilizza la propria intelligenza per raggiungere quello stato. Il file di configurazione di norma:
- Definisce quali immagini container compongono l'applicazione e dove si trovano (in quale registro).
- Fornisce ai container lo storage e altre risorse.
- Definisce e protegge le connessioni di rete tra container.
- Specifica il controllo versioni (per rollout a fasi o canary).
Lo strumento di orchestrazione pianifica l'implementazione dei container (e delle repliche dei container, per la resilienza) a un host. Sceglie l'host migliore in base alla capacità CPU disponibile, alla memoria o ad altri requisiti o vincoli specificati nel file di configurazione.
Una volta che i container sono implementati, lo strumento di orchestrazione gestisce il ciclo di vita dell'applicazione containerizzata in base al file delle definizioni del container (spesso un Dockerfile). Questo include:
- Gestione della scalabilità (incrementale e decrementale), bilanciamento del carico e allocazione delle risorse tra i container.
- Garanzia della disponibilità e delle prestazioni spostando i container su un altro host nel caso di un'interruzione o di una carenza di risorse del sistema.
- Raccolta e archiviazione dei dati di log e di altre telemetrie utilizzati per monitorare lo stato di integrità e le prestazioni dell'applicazione.
Vantaggi dell'orchestrazione dei contenitori
È probabilmente chiaro che il vantaggio principale dell'orchestrazione di container sia l'automazione - e non solo perché riduce notevolmente lo sforzo e la complessità di gestire un ampio patrimonio di applicazioni containerizzate. Automatizzando le operazioni, l'orchestrazione supporta un approccio Agile o DevOps che consente ai team di sviluppare e implementare in cicli rapidi e iterativi e di rilasciare più velocemente nuove funzioni e funzionalità.
In aggiunta, l'intelligenza di uno strumento di orchestrazione può migliorare o estendere molti dei vantaggi intrinseci della containerizzazione. Ad esempio, l'automazione della selezione dell'host e dell'allocazione delle risorse, basata sulla configurazione dichiarativa aumenta al massimo l'uso efficiente delle risorse di calcolo; il monitoraggio dello stato di integrità e la riassegnazione dei container aumentano al massimo la disponibilità.