Accedi / Registrati Account

Container

Cos'è un operatore Kubernetes?

Jump to section

Un operatore Kubernetes è un metodo per la creazione di pacchetti, il deployment e la gestione di un'applicazione Kubernetes. Un'applicazione Kubernetes viene distribuita su Kubernetes e gestita utilizzando l'interfaccia di programmazione delle applicazioni (API) Kubernetes e lo strumento kubectl.

Un operatore Kubernetes è un controller specifico dell'applicazione, che estende le funzionalità dell'API Kubernetes consentendo di creare, configurare e gestire le istanze di applicazioni complesse per conto di un utente di Kubernetes.

Partendo dai concetti di base delle risorse e dei controller Kubernetes, integra conoscenze specifiche relative all'applicazione o al dominio per automatizzare l'intero ciclo di vita del software che gestisce. 

In Kubernetes, i controller del piano di controllo attuano cicli di controllo che confrontano iterativamente lo stato desiderato del cluster con quello effettivo. Se non c'è corrispondenza tra i due stati, il controller interviene per risolvere il problema. 

Un operatore è un controller Kubernetes specifico, che impiega le risorse personalizzate dell'utente (CR) per gestire le applicazioni e i rispettivi componenti. La risorsa è personalizzata dall'utente con configurazione e impostazioni di livello superiore. L'operatore Kubernetes traduce tali istruzioni in azioni di livello inferiore, in base alle best practice integrate nella logica dell'operatore.

La risorsa personalizzata costituisce il meccanismo di estensione dell'API in Kubernetes. Una definizione di risorsa personalizzata (CRD) definisce la CR ed elenca tutte le configurazioni disponibili a chi utilizza l'operatore. 

Nell'ambito della risorsa, l'operatore Kubernetes osserva un tipo di CR e avvia azioni specifiche per l'applicazione, affinché lo stato effettivo e quello desiderato corrispondano.

Gli operatori Kubernetes possono introdurre nuovi tipi di oggetti tramite le CRD, che possono essere gestite dall'API Kubernetes come oggetti integrati, anche con l'interazione tramite kubectl e l'inclusione nei criteri di controllo degli accessi basato sui ruoli.

Mentre continua a monitorare l'esecuzione dell'applicazione, un operatore Kubernetes può eseguire il backup dei dati, ripristinare eventuali errori e aggiornare l'applicazione, in modo automatico. 

Le attività possibili a un operatore Kubernetes sono innumerevoli: dalla scalabilità di un'applicazione complessa agli aggiornamenti delle versioni dell'applicazione, fino alla gestione dei moduli kernel per i nodi in un cluster di elaborazione con hardware specializzato.

Scopri di più sul funzionamento degli operatori Kubernetes. Partendo da esempi concreti, impara a crearli con l'apposito framework e con gli SDK (Software Development Kit).
 

Operatori e gestione delle applicazioni Kubernetes

Con Kubernetes è possibile gestire e garantire la scalabilità delle applicazioni stateless quali app web, backend mobili e servizi API, senza dover sapere come queste funzionano. Le funzioni integrate di Kubernetes sono infatti progettate per semplificare l'esecuzione di queste attività.

Le applicazioni stateful, come i database e i sistemi di monitoraggio, richiedono invece competenze specifiche del dominio di cui Kubernetes è sprovvisto, e che servono per garantirne la scalabilità, l'aggiornamento e la riconfigurazione.

Gli operatori Kubernetes codificano questa competenza specifica del dominio nelle estensioni Kubernetes, agevolando la gestione e l'automazione del ciclo di vita di un'applicazione. 

Eliminando le complesse attività di gestione manuale delle applicazioni, gli operatori assicurano ai processi scalabilità, ripetibilità e standardizzazione.

Semplificano inoltre agli sviluppatori il deployment e l'esecuzione dei servizi fondamentali da cui dipendono le applicazioni realizzate. 

Agli ingegneri e ai fornitori dell'infrastruttura, gli operatori consentono di distribuire in modo uniforme il software nei cluster Kubernetes e di ridurre la necessità di ricorrere all'assistenza, poiché identificano e correggono le problematiche dell'applicazione. 

Gli operatori consentono di scrivere il codice di automazione di un'attività, superando le funzioni di automazione di base presenti in Kubernetes. Per i team che hanno adottato metodi DevOps o SRE (Site Reliability Engineering) esistono operatori specifici per integrare i processi SRE in Kubernetes. 

Sostanzialmente, un modello di operatore deve rispecchiare le modalità con le quali un operatore umano gestisce un servizio. Per l'operatore umano è indispensabile conoscere in maniera approfondita il funzionamento previsto di un'app o di un servizio, le modalità di distribuzione e quelle di risoluzione di eventuali problemi.

L'ingegnere responsabile dell'affidabilità di un sito o i team operativi scrivono il codice necessario a gestire un'applicazione: un operatore invece è progettato per utilizzare le conoscenze operative umane e codificarle in un software in grado di gestire e distribuire i carichi di lavoro Kubernetes, riducendo l'intervento manuale. 

Gli operatori più funzionali sono quelli creati da chi è esperto nella logica di business che sottende all'installazione, all'esecuzione e all'aggiornamento di una specifica applicazione.

Spesso la creazione di un operatore inizia dall'automazione delle attività di installazione e provisioning self service di un'applicazione, e prosegue con l'aggiunta di capacità di automazione più complesse.

Per realizzare operatori Kubernetes è inoltre possibile utilizzare un SDK specifico che semplifica le attività di sviluppo e fornisce gli strumenti per creare, testare e raggruppare gli operatori sfruttando un'ampia scelta di diagrammi Helm, playbook Ansible o Golang.

Operator Framework

Operator Framework è un progetto open source che ti consente di accelerare lo sviluppo di un operatore fornendo strumenti per sviluppatori e runtime Kubernetes.

Operator Framework include:

  • Operator SDK: un kit che permette agli sviluppatori di creare gli operatori senza dover necessariamente conoscere le complessità dell'API Kubernetes.
  • Operator Lifecycle Management: uno strumento per la supervisione dell'installazione, degli aggiornamenti e della gestione del ciclo di vita di tutti gli operatori eseguiti in un cluster Kubernetes.
  • Operator Metering: per creare report di utilizzo degli operatori che erogano servizi specializzati.

Utilizzo degli operatori con Red Hat OpenShift

Red Hat® OpenShift® è una piattaforma container di livello enterprise basata su Kubernetes, che offre operazioni automatizzate in tutto lo stack per gestire deployment di cloud ibridi e multicloud.

Red Hat OpenShift impiega gli operatori Kubernetes per eseguire in autonomia l'intera piattaforma, esponendo la configurazione in modalità nativa tramite gli oggetti Kubernetes e consentendo un'installazione rapida e aggiornamenti frequenti e sicuri. 

Red Hat OpenShift integra OperatorHub, un registro di operatori certificati creati da fornitori di software e progetti open source. OperatorHub rende disponibile una raccolta di operatori, compatibili con Red Hat OpenShift, che sono stati raggruppati per un'ottimale gestione del loro ciclo di vita.

Gli strumenti necessari per lavorare con Kubernetes

Red Hat OpenShift product logo

Sviluppa, distribuisci e gestisci i tuoi container in qualsiasi ambiente.

Trova, prova, acquista, distribuisci e gestisci software containerizzato certificato in tutti i tuoi ambienti: pubblico, privato, cloud e on premise, mediante Red Hat OpenShift.

Esegui i tuoi container Linux con un sistema operativo ottimizzato e leggero.

Scopri gli altri vantaggi di Kubernetes