🎉 T-wiki 1.3.0 is released

VM

Creazione

Dal portale azure andare a cercare la risorsa del set di macchine virtuali, da quello andare a verificare i seguenti parametri

La modalita di orchestrazione deve essere Uniforme, in questo modo che tutti gli elementi siano uguali

Per il nome della risorsa inserire anche il nome dell’ambiente in modo che sia facilmente identificabile

Immagine

L’immagine di partenza selezionata è quella di FlatCar, i motivi principali sono 2:

  • docker già presente
  • aggiornamento automatico con verifica verso il server principale Kinkvolt (al momento è un pro)

Da qua selezionare la versione stable con architettura adatta al sistema attuale

Dimensione

Le dimensioni della macchina virtuale dipendono dagli scopi per cui abbiamo quasi sempre 2 esigenze diverse, una per le manager e una per le worker

Per le manager l’opzione consigliata è un 2 core con 2 GB di ram, al momento il tier che si avvicina di più e che rispetta questo limite è un 2 * 4; per i manager il carico è pressoché bassissimo quindi si può optare per la versione burstable (Serie B)

Per le worker è necessario capire l’utilizzo della macchina, per ambienti con poco carico o con un utilizzo saltuario si può optare anche qua per la serie B con un tier più elevato 4 * 8 o 8 * 16 (non andrei oltre); per quelle di produzione utilizzare la Serie D per avere maggior performance, anche qua i tier sono 4 * 8 è 8 * 16, più il tier è piccolo ma comunque sufficiente a mantenere un minimo di carico, più possiamo essere flessibili nel gestire lo scaling

Utilizzare per i worker cpu AMD in quanto alcuni componenti lo necessitano (keycloak)

Dimensione del disco

Il dimensionamento del disco deve tener conto di base di 2 parametri: il sistema operativo e docker; questi sono sempre presenti e secondo le specifiche necessitano rispettivamente di 30 + 20 GB di spazio; a questo spazio c’è da andare ad aggiungere eventuale lavoro locale fatto su disco locale da parte delle immagini utilizzate, al momento non ci sono situazioni di questo tipo quindi si è optato per un disco da 64 GB

Rete e Load Balancer

Selezionare la rete del gruppo di risorse e inserire un load balancer, nel caso in cui non sia presente un load balancer andare alla sezione specifica

NB: quanto viene aggiunto un gruppo di VM ad una rete, se sono presenti delle regole queste vengono tolte; ricordarsi di andare a reinserirle in seguito

Scalabilità

Al momento lo scaling è manuale, per quanto riguarda il numero di macchine, questo è modificabile anche in seguito, principalmente se ne usano 3 per i manager e 1/2 per i worker dipendentemente da quanto carico devono sopportare

Altro

Il resto delle impostazioni rimane invariato

Post Creazione

Dopo aver creato la risorsa è necessario andare a sistemare la parte di rete aprendo le varie porte necessarie che sono:

  • ssh 22
  • http 80
  • https 443
  • sftp 2022 (decisa da noi)
  • portainer 9000 (decisa da noi)

Usando poi un terminale collegarsi alla macchina virtuale utilizzando la chiave ssh privata, di seguito un esempio del comando

ssh -p {porta} -i C:\\{percorso}\\{nomeFile} {utente}@{ip}

porta è la porta nat dedicata alla macchina a cui ci si vuole connettere, tipicamente è plausibile un numero da 50000 a 53999

percorso e nomeFile compongono il percorso alla chiave privata di connessione (tipicamente un file .pem)

utente è l’utente con cui loggarsi sulla macchina, azureuser è quello che impostiamo in creazione

ip è l’ip pubblico con cui raggiungere il load balancer che reindirizzerà verso la macchina di pertinenza

A questo punto è necessario eseguire una serie di comandi

Aggiornamento dei permessi utente

Per evitare problemi con l’esecuzione dei comandi docker, è necessario andare a modificare i permessi dell’utente azureuser in modo che possa andare a sfruttare tutte le funzionalità di docker tramite il seguente comando

sudo usermod -aG docker azureuser

Dopo averlo eseguito è necessario escollagarsi dalla connessione ssh e ricollegarsi

Collegamento al disco comune

Il collegamento al disco comune contiene tutti i file ed elementi che devono essere condivisi con le macchine virtuali

sudo mkdir /mnt/dockerstorage
if [ ! -d "/etc/smbcredentials" ]; then sudo mkdir /etc/smbcredentials ; fi
if [ ! -f "/etc/smbcredentials/storage.cred" ]; then sudo bash -c 'echo "username=***" >> /etc/smbcredentials/storage.cred' && sudo bash -c 'echo "password=***" >> /etc/smbcredentials/storage.cred' ; fi
sudo chmod 600 /etc/smbcredentials/storage.cred
sudo bash -c 'echo "//***.file.core.windows.net/dockerstorage /mnt/dockerstorage cifs nofail,vers=3.0,credentials=/etc/smbcredentials/storage.cred,dir_mode=0777,file_mode=0777,serverino,nobrl" >> /etc/fstab'
sudo mount -t cifs //***.file.core.windows.net/dockerstorage /mnt/dockerstorage -o vers=3.0,credentials=/etc/smbcredentials/storagefstaging.cred,dir_mode=0777,file_mode=0777,serverino,nobrl

NB: il comando è stato mascherato, inserire le proprietà corrette

Per verificare che sia stato montato correttamente usare il comando

df -Th

Con questo vengono elencati tutti i dischi collegati

Collegamento a docker storage

Il collegamento al docker storage serve per verificare che la macchina riesca a collegarsi correttamente al repository delle immagini docker

sudo -u azureuser docker login {repository} --username {username} --password {password}

repository è l’url del docker registry dove sono immagazzinate le varie immagini dei container

username è l’utente di accesso al repository

password è la sua password

Nel caso in cui questo non riesca a collegarsi, il problema molto probabilmente è dato dalla non possibilità di collegarsi alal’esterno dovuto alla mancanza di una regole per permettere il traffico in uscita

Creazione dello swarm

La creazione dello swarm è necessaria solo quando si ha un ambiente nuovo e si è sulla prima macchina creata dei manager, in tutti gli altri casi è necessario collegare le restanti macchine allo swarm di pertinenza

docker swarm init

Collegamento allo swarm

Per collegare una VM allo swarm è necessario prima generare, da uno dei manager dello swarm, il tocken di collegamento; per farlo è sufficiente usare il seguente comando che varia da manager a worker (è possibile variare anche in seguito con il comando demote o promote il ruolo della VM)

docker swarm join-token manager
 
docker swarm join-token worker

la stringa generata è il comando da lanciare sulla macchina da collegare