[Appunti di Civo Cloud] Una comoda CLI per tutte le operazioni

Vediamo come utilizzare la CLI messa a disposizione da Civo per la gestione dei cluster Kubernetes e non solo.

N.B. Questo breve tutorial si basa sulla documentazione ufficiale consultabile al link https://www.civo.com/learn/kubernetes-cluster-administration-using-civo-cli

Se utilizziamo Ubuntu possiamo servirci di snap (https://snapcraft.io/install/civo/ubuntu) per l’installazione.

Basta eseguire

sudo snap install civo

N.B. Al momento della stesura dell’articolo la versione snap risulta non funzionante al 100% quindi non consente di completare la creazione del cluster.

In alternativa scarichiamo direttamente il binario disponibile a questo link https://github.com/civo/cli/releases scegliendo la versione compatibile con il nostro sistema operativo, che nel nostro caso è https://github.com/civo/cli/releases/download/v0.6.6/civo-0.6.6-linux-amd64.tar.gz

Dopo aver scompattato il file compresso non abbiamo bisogno di effettuare alcuna installazione. Questo è apprezzabile perchè in qualsiasi momento possiamo rimuovere la cartella senza lasciare tracce.

Per semplificarci la vita ci conviene creare un alias all’eseguibile così da poterlo richiamare da qualsiasi percorso.

Eseguiamo quindi

alias civo='~/Scaricati/civo/civo' (modificando il path con quello della cartella in cui si trova il file)

Questa operazione non è permanente quindi andrà ripetuta per ogni shell aperta a meno che non si modifichi il file ~/.bashrc.

A questo punto dobbiamo procedere con la configurazione, aggiungendo la API key necessaria per interagire con il proprio account Civo.

Di default ne viene già creata una accessibile al link https://www.civo.com/api dopo essersi autenticati.

Da un punto di vista strettamente tecnico si tratta del token da passare nell’header ‘Authorization bearer’ ad ogni richiesta.

Il comando da digitare è

civo apikey add test-key

Facciamo una verifica con

civo apikey current test-key

Ora siamo sicuri che la configurazione è completa quindi possiamo fare un primo test.

Andiamo a creare un cluster chiamato kube_demo costituito da due nodi (un master e un worker) di taglia media (2 CPU, 4 GB di RAM, disco da 50 GB) con

civo kubernetes create kube_demo --size=g2.medium --nodes=2 --wait

Dopo un paio di minuti o anche meno il cluster è pronto.

Per poter utilizzare kubectl ci occorre il file di configurazione che possiamo scaricare manualmente dalla dashboard oppure lasciar fare tutto in automatico alla CLI con

civo kubernetes config kube_demo --save

Tale comando va a sovrascrivere il file ~/.kube/config per cui occorre prestare molta attenzione sebbene venga richiesta una conferma, che di default è negata.

In alternativa si può utilizzare l’opzione --merge per non cancellare il contenuto del file, creando un nuovo contesto che andrà poi selezionato opportunamente per lavorare con kubectl.

Il cluster prevede l’installazione di default di due applicazioni: Traefik (controller Ingress) e Metrics Server (monitoraggio).

Volendo, si può escludere l’installazione di Traefik aggiungendo --remove-applications=traefik al comando di creazione, ma è sconsigliabile almeno per chi è alle prime armi con Kubernetes.

Vediamo quale tipo di metriche è possibile ricavare dai vari nodi.

Eseguiamo

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"

ottenendo un JSON che non è particolarmente comprensibile. Possiamo formattare il tutto, scegliendo il tool che più ci aggrada, ad esempio jq con

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq

civo-metriche

Sostanzialmente abbiamo delle informazioni sui nodi disponibili e sull’impiego di memoria e CPU. Tutto questo potrà esserci utile per definire in seguito le policy di scaling da adottare in funzione del carico applicativo.

A tale riguardo un altro comando molto utile è

kubectl top node

con cui possiamo vedere proprio la lista dei nodi ordinata in base al loro utilizzo.

civo-top-node

Altro aspetto interessante è la disponibilità di alcune applicazioni che possono essere installate direttamente dalla dashboard o tramite CLI. Sono raccolte in un marketplace accessibile su GitHub dove è possibile visionare i vari file di installazione in modo da avere un’idea più precisa sui vari deployment, service, repliche, mapping delle porte e allo stesso tempo contribuire aggiungendo delle nuove app.

Prima di concludere vediamo proprio come installare semplicemente Portainer per gestire il nostro cluster K3s.

Da CLI eseguiamo

civo kubernetes applications ls

per visualizzare la lista aggiornata, quindi

civo kubernetes applications add portainer kube_demo

e il gioco è fatto.

civo-install-portainer

Di default Portainer non è accessibile all’esterno del cluster poichè il deploy del servizio è fatto come NodePort, quindi sfruttiamo la presenza di Traefik per creare un ingress mappato sulla root “/” dell’indirizzo IP pubblico del nodo master, che è l’unico ad averne uno.

Predisponiamo un file YAML specifico (è possibile scaricarlo da questo link) ed eseguiamo

kubectl apply -f portainer-ingress.yaml

Ora visualizziamo lo stato degli ingress in modo da individuare l’ip pubblico eseguendo

kubectl get ingress --all-namespaces

civo-ingress-portainer

L’opzione --all-namespaces ci serve per includere appunto tutti i namespace. In sua assenza viene considerato solo il namespace default.

Non ci resta che aprire il browser all’indirizzo http://<address>/ per accedere al pannello di configurazione di Portainer. Ovviamente ci verrà segnalata l’assenza di una connessione protetta ma per i nostri test possiamo sorvolare.

Per ora è tutto. Al prossimo appuntamento!

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'invio dei cookies da parte nostra. Maggiori informazioni

Questo sito utilizza i cookies per fornire la migliore esperienza di navigazione possibile. Continuando ad utilizzarlo senza modificare le impostazioni o cliccando su "Accetta" acconsenti al loro utilizzo.

Chiudi