MySQL Operator for Kubernetes

Una tecnologia che permette di rendere stateful i database MySQL su cluster Kubernetes

Scenario

Quando si parla di innovazione in termini di sviluppo applicazioni e modalità di rilascio, negli ultimi anni l’approccio a microservizi è quello che sta andando per la maggiore. Tale approccio, infatti, si differenzia dal quello tradizionalmente usato ossia quello monolitico. L’approccio monolitico prevede che tutte le librerie usate e i vari componenti di un’applicazione siano generalmente compilati in un unico eseguibile che poi viene opportunamente distribuito su macchine tradizionalmente fisiche.

L’approccio a microservizi invece prevede che le varie parti che compongono un’applicazione siano separate tra loro e interconnesse per garantire: flessibilità, eseguibili leggeri e resilienza. In questo caso, i vari microservizi sono distribuiti su macchine virtuali o Docker Container.

Ogni microservizio ha vita propria ed è sviluppato per interagire con gli altri e permettere il funzionamento complessivo dell’applicazione. Nel caso in cui un microservizio sviluppato su macchine virtuali o Container abbia degli errori o interrompa la sua esecuzione, è necessario intervenire manualmente. Kubernetes è un servizio che permette di controllare il ciclo di vita dei microservizi in maniera automatizzata e semplificata.

Ogni microservizio in Kubernetes è rappresentato tipicamente da un Pod che esegue al suo interno uno o più Docker Container. La strategia di Kubernetes è quella di riavviare i Pod nel caso in cui l’esecuzione di questi si interrompa, quindi questi devono essere pensati come dei servizi stateless. Anche la componente database (siano essi MySQL, Postgres, etc.) è governata attraverso un microservizio e quindi un Pod, però un database è per definizione un processo stateful, quindi in caso di riavvio del Pod che lo esegue, si perderebbero tutti i dati che questo possedeva, al meno di politiche di backup e restore che comunque possono non soddisfare i requisiti necessari al corretto funzionamento applicativo.

Nel caso di un’architettura MySQL InnoDB sarebbero introdotte diverse complessità nella manutenzione, update e amministrazione dell’applicazione. Un esempio è la necessità di controllare la sequenza di attivazione e spegnimento dei nodi. Si conclude quindi che gestire tali attività attraverso il solo paradigma Kubernetes diventa una pratica troppo complessa da sostenere.

Soluzione

Per risolvere tale problematica che limita fortemente l’utilizzo di database attraverso Kubernetes, Technology Reply propone la soluzione annunciata da Oracle: il MySQL Operator for Kubernetes.

Attraverso gli Operator Kubernetes è possibile definire delle risorse Kubernetes personalizzate che estendono le funzionalità di Kubernetes stesso.

Gli operatori Kubernetes permettono di integrare nuove funzionalità nei meccanismi e logiche già presenti su Kubernetes. Sono delle estensioni software che, tramite l'utilizzo di risorse personalizzate, permettono di gestire applicazioni e le loro componenti.

L’introduzione del MySQL Operator for Kubernetes ha come obiettivo quello di installare e gestire in modo semplice e agevole un MySQL InnoDB Cluster all’interno di Kubernetes. Tale operatore permette, ad esempio, di controllare, in caso di fallimenti software o hardware, il comportamento dei Pod che ospitano database MySQL.

Come detto in precedenza, di default i Pod che vanno in errore sono riavviati da Kubernetes e quindi tutti i dati che tali Pod stavano utilizzando non vengono preservati, di conseguenza i Pod devono essere sviluppati con un approccio stateless.

Con il MySQL Operator, Oracle offre una soluzione che permette di gestire in maniera stateful un database MySQL ospitato in un Pod controllandone il ciclo di vita e altri aspetti come il rilascio e gli aggiornamenti dei vari componenti software, la gestione dei certificati TLS e la configurazione del numero di repliche del Pod che ospita il database.

Vantaggi

MySQL Operator for Kubernetes ha come obiettivo quello di semplificare il rilascio di database MySQL in cluster Kubernetes. Alcuni dei vantaggi che questo operatore offre sono:

  • Rilascio automatizzato: grazie alle primitive Kubernetes le procedure di rilascio sono automatizzate e semplificate in modo da essere facilmente integrate in flussi DevOps;
  • High availability: attraverso la replicazione dei Pod che ospitano il database MySQL, ci si assicura che ci sia sempre almeno un processo pronto a rispondere alle richieste entranti;
  • Self-healing: i processi MySQL sono in grado di riavviarsi, grazie alle primitive di Kubernetes, in caso di fallimento assicurandosi di non perdere i dati e le transazioni gestite dal database MySQL;
  • Scaling: è possibile aumentare o diminuire il numero di repliche dei Pod che ospitano il database MySQL in base alle condizioni del carico istantaneo sui Pod in esecuzione;
  • Backup: l’operatore offre un meccanismo automatico di creazione e controllo dei backup del contenuto dei database.


Il nostro team

Technology Reply offre la propria esperienza e le proprie competenze ai clienti per implementare e monitorare soluzioni Cloud per i propri processi con particolare attenzione sull’implementazione di database MySQL on-cloud. Tale conoscenza e capacità sono state infatti messe in mostra in occasione dell’ultimo Oracle MySQL Day a Roma, in cui il team Technology Reply ha illustrato agli appassionati e agli utilizzatori di MySQL le novità e i vantaggi introdotti dal MySQL Operator for Kubernetes.