# Come essere multi-cloud in 5 semplici passi
# Perché multi-cloud?
Uno dei concetti più importanti dell’ingegneria è quello dell’availability o disponibilità. Un business per funzionare nell’era di internet deve essere altamente disponibile.
Andare nel cloud significa delegare il mantenimento della disponibilità al nostro provider. Ad esempio AWS di Amazon ha il concetto di Service Credits (opens new window). Se per qualche motivo non è riuscita a garantirci un 95.0% di uptime in un determinato mese, ci riaccredita l’intero prezzo del servizio. In molti casi questo prezzo è solo una frazione dei guadagni persi, per questo avere un sistema multi-cloud potrebbe essere appetibile. Quando AWS è giù possiamo dirottare il nostro traffico su un secondo cloud.
Un’altro motivo per cui il multi-cloud può rientrare nella strategia aziendale è ancora più semplice da capire. Nel momento in cui ci leghiamo ad un particolare provider, questo a sua volta comprensibilmente cerca di saldare il legame il più possibile. Tornando all’esempio di AWS, ci sono una miriade di servizi offerti da cui poi diventa difficoltoso prescindere. Se ad esempio decidiamo di far gestire l’elenco degli utenti e password da Amazon Cognito e poi optiamo per una seconda soluzione, la migrazione rappresenterà un grosso problema anche per i nostri utenti, che saranno costretti a cambiare la password.
# Kubernetes significa timoniere
Kubernetes è una tecnologia che ci permette di catturare la complessa struttura del nostro business sotto forma di codice. Con questo possiamo effettuare il deployment nel cloud di nostra scelta, con in aggiunta la possibilità di testare in locale sul nostro computer. Questa pratica si chiama infrastructure as a code e permette di fotografare tutta la nostra infrastruttura con quello che contiene e di poterla replicare con un click in diversi cloud. Tutti i maggiori cloud provider oggi supportano Kubernetes (inizialmente sviluppato da Google ma poi reso open source).
# Un sito Wordpress altamente disponibile
In 5 semplici passi vi spiegherò come rilasciare un semplice sito Wordpress in un cluster Kubernetes locale.
# Passo 0
Assicuratevi di avere un gestore di pacchetti installato, io userò Homebrew (opens new window) perché ho un mac, se invece avete Linux dovete seguire le guide di installazione nei siti dei relativi software.
# Passo 1
Installate Kubernetes localmente con i seguenti comandi:
brew install kubernetes-cli
brew cask install minikube
Linux
Su Linux i comandi diventano
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get upgrade
sudo apt install -y virtualbox virtualbox-ext-pack
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt -y install kubectl
# Passo 2
Installate Helm che è una specie di gestore di pacchetti di Kubernetes. Possiamo dire che Homebrew sta al mac come Helm sta a Kubernetes. Questi pacchetti non sono altro che ricette pronte per i software più comuni, in gergo sono chiamate chart. Ad esempio noi useremo un chart per Wordpress. Lanciate il seguente comando
brew install kubernetes-helm
Linux
Su Linux possiamo usare snap per installare Helm (snap
è preinstallato nelle versioni più recenti di Ubuntu)
sudo snap install helm --classic
# Passo 3
Fate partire minikube
minikube start
Minikube è un cluster Kubernetes che gira sul vostro computer, utile per imparare.
# Passo 4
Installare Tiller
helm init
Tiller è la parte server di Helm, viene installato dentro il vostro cluster Kubernetes (in questo caso minikube).
# Passo 5
Per effettuare il deploy di Wordpress usiamo un chart già pronto di Helm
helm install stable/wordpress
Prendete nota del risultato di questo comando. In particolare copiate il nome del servizio di tipo LoadBalancer
:
NAME: icy-pike
... altro output ...
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
icy-pike-mariadb ClusterIP 10.100.216.23 <none> 3306/TCP 0s
icy-pike-wordpress LoadBalancer 10.98.5.64 <pending> 80:30316/TCP,443:30662/TCP 0s
... eccetera ...
Nel mio caso è icy-pike-wordpress
.
# Congratulazioni!
Avete fatto il deploy di Wordpress nel cluster di Kubernetes. Per verificare il risultato avete bisogno di collegarvi al cluster. Siccome stiamo simulando tutto localmente è necessario un ulteriore comando:
minikube service icy-pike-wordpress
Sostituite il nome del servizio con quanto copiato nell’ultimo passo. Questo farà aprire Wordpress nel vostro browser!
HTTPS
Per qualche motivo potrebbero aprirsi due diversi tab, uno per HTTP
e uno HTTPS
, se quello con HTTPS
è sbagliato vi comparirà un errore, potete semplicemente chiuderlo.
# Multi-cloud in pratica
Adesso che avete rilasciato un Wordpress perfettamente funzionante sul vostro computer, potete fare la stessa cosa su un cloud vero e proprio. I passi sono gli stessi. Per essere precisi il passo 3 è necessario solo per un ambiente di sviluppo. Questa piccola dimostrazione ha come scopo solo quello di dare un idea di quanto Kubernetes semplifichi il processo di migrare da un cloud all’altro, certamente il discorso è amplissimo ma spero di aver acceso la vostra curiosità.
Andrea Passaglia (opens new window)