Hai mai pensato a cosa è successo in background ogni volta che creiamo un'istanza o una macchina virtuale tramite Openstack cli o dashboard, in questo articolo elaboreremo passo passo la creazione di VM o istanze in Openstack. Tutti i componenti di Openstack comunicano tra loro con l'API utilizzando Auth-token.
Creazione di una macchina virtuale in OpenStack tramite OpenStack CLI
Crea il file delle credenziali e quindi esegui il comando nova-boot,
# nova boot --flavor m1.small --image centos7 --nic net-id={private_network_id} --security-group norprod_sec_grp --key-name my_key stack_testvm
Una volta eseguito il comando nova boot, i seguenti passaggi vengono eseguiti dietro le quinte,
Passaggio:1) Horizon Dashboard o OpenStack CLI ottiene le credenziali dell'utente e si autentica con il servizio di identità tramite l'API REST
- Il servizio di identità (Keystone) autentica l'utente con le credenziali dell'utente e quindi genera e restituisce un auth-token, quel token di autenticazione che verrà utilizzato per inviare la richiesta ad altri componenti tramite REST-Call
Passaggio:2) La CLI di Dashboard o OpenStack converte la nuova richiesta di istanza specificata nell'istanza di lancio o nel comando nova boot in una richiesta API REST e la invia a nova-api
Passaggio:3) Quindi il servizio nova-api riceve la richiesta e invia tale richiesta al servizio di identità (Keystone) per la convalida del token di autenticazione e dell'autorizzazione di accesso,
- Il servizio Keystone convalida il token e invia le intestazioni di autenticazione aggiornate con i ruoli insieme alle autorizzazioni
Passaggio:4) Dopo aver ottenuto la risposta da keystone, nova-api verifica la presenza di conflitti con nova-database e quindi crea la voce del database iniziale per la nuova istanza o VM.
Passaggio:5) nova-api invia la richiesta rpc.call a nova-scheduler aspettandosi di ricevere la voce dell'istanza aggiornata con l'id host specificato
Passaggio:6) Ora nova-scheduler preleva la richiesta dalla coda
Passaggio:7) nova-scheduler parla con nova-database per individuare un host appropriato utilizzando un meccanismo di filtraggio e pesatura,
- nova-scheduler restituisce la voce dell'istanza aggiornata con l'ID host appropriato dopo aver filtrato e pesato
- nova-scheduler invia la richiesta rpc.cast a nova compute per avviare un'istanza sull'host appropriato
Passaggio:8) nova-compute preleva la richiesta dalla coda e invia la richiesta rpc.call a nova-conductor per ottenere informazioni sulla VM o sull'istanza come ID host e sapore (RAM, CPU e disco)
Passaggio:9) nova-conductor prende la richiesta dalla coda e comunica con nova-database,
- nova-conductor ottiene le informazioni sull'istanza
- ora nova-compute preleva le informazioni sull'istanza dalla coda
Passaggio:10) nova-compute si connette a sguardo-api effettuando una chiamata REST utilizzando auth-token, quindi nova-compute utilizza l'id dell'immagine per ottenere l'URI dell'immagine dal servizio immagine e carica l'immagine dall'archivio immagini
Passaggio:11) sguardo-api convalida il token di autenticazione con keystone e successivamente nova-compute ottiene i metadati dell'immagine
Passaggio:12) Nova-compute effettua la chiamata REST passando il token di autenticazione all'API di rete (Neutron) per allocare e configurare la rete in modo che vm ottenga l'indirizzo IP
Passaggio:13) Neutron-server convalida il token di autenticazione con keystone e successivamente nova-compute recupera le informazioni di rete.
Passaggio:14) Nova-Compute effettua la chiamata REST passando il token di autenticazione all'API del volume per collegare il volume all'istanza o alla VM.
Passaggio:15) cinder-api convalida il token di autenticazione con keystone e quindi nova-compute ottiene le informazioni sull'archiviazione dei blocchi.
Passaggio:16) nova-compute genera i dati per il driver dell'hypervisor ed esegue la richiesta sull'hypervisor utilizzando libvirt o API e infine viene creata una VM sull'hypervior. Possiamo vedere quella VM in Dashboard e anche usando il comando "nova list".
Questo è tutto dall'articolo, spero che trovi questo articolo informativo. Si prega di condividere feedback e commenti.