Jump to section

Cos'è un operatore Kubernetes?

Copia URL

Un operatore Kubernetes è un metodo che consente di creare il pacchetto di un'applicazione Kubernetes, eseguire il deployment dell'applicazione e gestirla. 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).

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 è 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.

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.

Keep reading

ARTICOLO

Container e VM

I container Linux e le macchine virtuali (VM) sono entrambi pacchetti di ambienti di elaborazione che combinano vari componenti IT e li isolano dal resto del sistema.

ARTICOLO

Cos'è l'orchestrazione dei container?

Definiamo orchestrazione dei container l'automazione dei processi di deployment, gestione, scalabilità e networking dei container.

ARTICOLO

Cos'è un container Linux?

Un container Linux è un insieme di processi, isolati dal resto del sistema, che esegue un'immagine distinta contenente tutti i file necessari per supportare tali processi.

Scopri di più sui container

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

Checklist

10 considerazioni sui deployment Kubernetes

Checklist

Sei considerazioni per scegliere la piattaforma Kubernetes giusta

Serie Open Answers: Cos'è Red Hat OpenShift?

Formazione

Corso di formazione gratuito

Running Containers with Red Hat Technical Overview

Corso di formazione gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Corso di formazione gratuito

Developing Cloud-Native Applications with Microservices Architectures