Kubernetes Azure: come far girare Kubernetes su Azure

E’ possibile creare un cluster Kubernetes sia tramite l’interfaccia web di Azure, sia tramite command line.

Kubernetes Azure: tutto ciò che devi sapere

Vediamo come eseguire l’installazione di Kubernetes su MS Azure tramite riga di comando.

Preparare la shell è il primo step!

Sono disponibili due opzioni: una consiste nell’usare la shell interattiva di Azure, l’altra nell’installare gli strumenti della riga di comando di Azure in locale. Di seguito sono riportate le istruzioni per ciascuno.

1 – Shell interattiva di Azure

Il portale di Azure contiene una shell interattiva che puoi usare per comunicare con il tuo cluster Kubernetes. Per accedere a questa shell, vai su portal.azure.com loggati e fai clic sul pulsante in basso.

../../_images/cli_start.png

Tag alt = Kubernetes Azure

2 – Command line tools in locale

 Puoi accedere all’interfaccia della riga di comando di Azure tramite un pacchetto che puoi installare localmente.

A tale scopo, segui prima le istruzioni di installazione nella documentazione di Azure. Quindi esegui il seguente comando per connettere la tua CLI locale con il tuo account:

az login

Dovrai aprire un browser e seguire le istruzioni nel tuo terminale per accedere.

Attivare la subscription

Azure usa il concetto di subscription (abbonamenti) per gestire i costi. Puoi ottenere un elenco di subscription a cui il tuo account ha accesso eseguendo:

az account list –refresh –output table

Scegli la subscription che desideri utilizzare per creare il cluster e impostala come predefinita. Se hai un solo abbonamento puoi ignorare questo passaggio.

az account set –subscription <SUBSCRIPTION-NAME>

Creare un resource group

Azure usa il concetto di resource group per raggruppare le risorse correlate. Dobbiamo creare un resource group in una determinata posizione del data center. Creeremo risorse di calcolo all’interno di questo resource group.

az group create \

   –name=<RESOURCE-GROUP-NAME> \

   –location=centralus \

   –output table

Imposta un nome per il cluster

Nei passaggi seguenti eseguiremo i comandi che ti chiedono di inserire un nome di cluster. Ti consigliamo di utilizzare qualcosa di descrittivo e breve. Faremo riferimento a questo come <CLUSTER-NAME> per il resto di questa sezione.

Il passaggio successivo creerà alcuni file sul tuo filesystem, quindi prima crea una cartella in cui andranno questi file. Ti consigliamo di assegnargli lo stesso nome del tuo cluster:

mkdir <CLUSTER-NAME>

cd <CLUSTER-NAME>

Crea una chiave SSH

ssh-keygen -f ssh-key-<CLUSTER-NAME>

Ti verrà chiesto di aggiungere una password, che puoi lasciare vuota se lo desideri. A questo punto verrà creata una chiave pubblica denominata ssh-key-<CLUSTER-NAME>.pub e una chiave privata denominata ssh-key-<CLUSTER-NAME>. Assicurati che entrambi entrino nella cartella che abbiamo creato in precedenza e tienili entrambi al sicuro!

Crea un virtual network e un sub-network

Kubernetes non ha di default un controller che applica le risorse e le policy di rete. le risorse networkpolicy sono importanti in quanto definiscono il modo in cui i pod Kubernetes possono comunicare in modo sicuro tra loro e con l’esterno, ad esempio Internet.

Per abilitarlo in Azure, dobbiamo prima creare una rete virtuale con i criteri di rete di Azure abilitati.

az network vnet create \

   –resource-group <RESOURCE-GROUP-NAME> \

   –name <VNET-NAME> \

   –address-prefixes 10.0.0.0/8 \

   –subnet-name <SUBNET-NAME> \

   –subnet-prefix 10.240.0.0/16

Recupereremo ora gli application ID della rete virtuale e della subnet appena creati e li salveremo nelle variabili bash.

VNET_ID=$(az network vnet show \

   –resource-group <RESOURCE-GROUP-NAME> \

   –name <VNET-NAME> \

   –query id \

   –output tsv)

SUBNET_ID=$(az network vnet subnet show \

   –resource-group <RESOURCE-GROUP-NAME> \

   –vnet-name <VNET-NAME> \

   –name <SUBNET-NAME> \

   –query id \

   –output tsv)

Creeremo un’entità servizio di Azure Active Directory (Azure AD) da usare con il cluster e assegneremo il ruolo di collaboratore da usare con la rete virtuale. Assicurati che SERVICE-PRINCIPAL-NAME sia qualcosa di riconoscibile, ad esempio binderhub-sp.

SP_PASSWD=$(az ad sp create-for-rbac \

   –name <SERVICE-PRINCIPAL-NAME> \

   –role Contributor \

   –scopes $VNET_ID \

   –query password \

   –output tsv)

SP_ID=$(az ad sp show \

   –id http://<SERVICE-PRINCIPAL-NAME> \

   –query appId \

   –output tsv)

Crea il cluster Kubernetes

A questo punto, potresti pensare di effettuare il provisioning del tuo cluster Kubernetes. Il seguente comando creerà un cluster Kubernetes (link all’articolo Cos’è Kubernetes) all’interno del resource group che abbiamo creato in precedenza.

az aks create \

   –name <CLUSTER-NAME> \

   –resource-group <RESOURCE-GROUP-NAME> \

   –ssh-key-value ssh-key-<CLUSTER-NAME>.pub \

   –node-count 3 \

   –node-vm-size Standard_D2s_v3 \

   –service-principal $SP_ID \

   –client-secret $SP_PASSWD \

   –dns-service-ip 10.0.0.10 \

   –docker-bridge-address 172.17.0.1/16 \

   –network-plugin azure \

   –network-policy azure \

   –service-cidr 10.0.0.0/16 \

   –vnet-subnet-id $SUBNET_ID \

   –output table

Questo dovrebbe richiedere alcuni minuti e fornirti un cluster Kubernetes funzionante!

Installa kubectl

Se stai usando la CLI di Azure in locale, installa kubectl, uno strumento per accedere all’API Kubernetes dalla riga di comando:

az aks install-cli

Nota: kubectl è già installato in Azure Cloud Shell.

Ottieni le credenziali per kubectl

az aks get-credentials \

   –name <CLUSTER-NAME> \

   –resource-group <RESOURCE-GROUP-NAME> \

   –output table

Questo commando aggiornerà automaticamente il file di configurazione di Kubernetes.

Verifica che il cluster sia funzionante

kubectl get node

La risposta dovrebbe elencare tre nodi in esecuzione e le loro versioni Kubernetes! Ogni nodo dovrebbe avere lo stato di Ready. Tieni presente che questo potrebbe richiedere alcuni istanti.

In conclusione

Abbiamo visto come creare un cluster Kubernetes in pochi semplici passi. Ti consigliamo sempre di fare riferimento alla documentazione ufficiale Azure per ulteriori approfondimenti.

Share: Facebook Twitter Linkedin

Comments