Distribuire Javascript Unikernels su Vultr
Unikernels sono sistemi operativi a singola applicazione. A differenza dei sistemi operativi generici come Linux, gli unikernels non possono eseguire più programmi sulla stessa istanza del server. Gli Unikernels sono costruiti compilando linguaggi di alto livello in immagini di macchine che girano direttamente su un hypervisor o bare metal. Questo tutorial distribuisce un semplice webserver JavaScript "ciao mondo" su Vultr.
Prerequisiti
-
Un sistema operativo simile a UNIX, tra cui:
- Mac OS
- Debian
- Ubuntu
- Fedora
- centos
-
Un percorso di archiviazione oggetti Vultr con provisioning .
- Prendi nota del nome host dell'archivio oggetti. La prima parte viene definita zona in questo tutorial. Ad esempio, se il nome host è ewr1.vultrobjects.com, la zona è ewr1 . Questo tutorial utilizza la zona di esempio ewr1 .
-
Una chiave API dell'account attiva . Assicurati che la tua chiave API consenta l'accesso dal tuo indirizzo IP.
Installa Ops
Scarica e installa Ops:
curl https://ops.city/get.sh -sSfL | sh
Puoi anche crearlo dalla fonte, disponibile su https://github.com/nanovms/ops .
- Potrebbe essere necessario riavviare dopo l'installazione affinché Ops funzioni correttamente.
Distribuisci il tuo primo Unikernel
Crea una directory di lavoro.
$ mkdir opstest
$ cd opstest
Crea un bucket di archiviazione oggetti Vultr. Usa un nome univoco.
Creare un file denominato config.json
che specifica il nome del secchio di archiviazione oggetti Vultr e la zona ewr1
.
{
"CloudConfig" :{
"Zone": "ewr1",
"BucketName":"your_unique_bucket_name"
}
}
Crea un file chiamato hi.js
. Questa semplice applicazione genera un server Web per l'ascolto sulla porta 8083 e la risposta "Hello World".
var http = require('http');
console.log("I'm running on Vultr");
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8083, "0.0.0.0");
console.log('Server running!');
Esporta le seguenti variabili d'ambiente.
export TOKEN=my_api_token
export VULTR_ACCESS=my_vultr_object_storage_access_key
export VULTR_SECRET=my_vultr_object_storage_secret_key
Crea l'immagine di Unikernel
Prossimi passi:
- Raggruppa il pacchetto del nodo 13.6 con l' applicazione JavaScript hi.js in un'immagine del disco unikernel.
- Carica l' immagine del disco .img su Vultr Object Storage.
- Importa l'immagine del disco da Vultr Object Storage in un'istantanea di Vultr Cloud.
Eseguire il comando seguente per eseguire questi passaggi in una sola azione.
$ ops image create -t vultr -c config.json -z ewr1 -p node_v13.6.0 -a hi.js
Elenca l'immagine per trovare l'ID immagine della nuova istantanea.
$ ops image list -z ewr1 -t vultr
Utilizzare l'ID immagine nella seconda colonna per creare un'istanza dall'istantanea.
$ ops instance create -z ewr1 -t vultr -i my_id
Verificare che l'istanza di Vultr Cloud sia in esecuzione.
$ ops instance list -z ewr1 -t vultr
Passa al tuo URL per l'indirizzo IP dell'istanza.
$ curl -XGET http://192.0.2.1:8083/
Hello World
Hai distribuito il unikernel "ciao mondo". Ulteriori informazioni su unikernels e Ops sono disponibili su: https://nanovms.gitbook.io/ops/vultr e https://ops.city/