Vai al contenuto principale

Creare la vostra prima Macchina Virtuale

Questa guida vi accompagna nella creazione della vostra prima macchina virtuale Hikube in 5 minuti cronometro!


Obiettivoโ€‹

Alla fine di questa guida, avrete:

  • Una macchina virtuale Ubuntu funzionante
  • Accesso SSH configurato
  • Connettivitร  di rete operativa
  • Storage persistente collegato

Prerequisitiโ€‹

Prima di iniziare, assicuratevi di avere:

  • kubectl configurato con il vostro kubeconfig Hikube
  • Diritti amministratore sul vostro tenant

๐Ÿš€ Passo 1: Creare il Disco VM (2 minuti)โ€‹

Preparate il file manifestโ€‹

Create un file vm-disk.yaml con un'immagine Ubuntu Cloud:

vm-disk.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: VMDisk
metadata:
name: disk-example
spec:
source:
http:
url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
optical: false
storage: 20Gi
storageClass: "replicated"

Distribuite il discoโ€‹

# Creare il disco VM
kubectl apply -f vm-disk.yaml

# Verificare lo stato (puรฒ richiedere 1-2 minuti)
kubectl get vmdisk disk-example -w

Risultato atteso:

NAME          STATUS   SIZE   STORAGECLASS   AGE
disk-example Ready 20Gi replicated 90s

Passo 2: Creare la Macchina Virtuale (2 minuti)โ€‹

Generate la vostra chiave SSHโ€‹

Se non avete ancora una chiave SSH:

# Generare una chiave SSH Ed25519 (moderna e sicura)
ssh-keygen -t ed25519 -f ~/.ssh/hikube-vm

# Visualizzare la chiave pubblica
cat ~/.ssh/hikube-vm.pub

Preparate il manifest VMโ€‹

Create un file vm-instance.yaml:

vm-instance.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: VMInstance
metadata:
name: vm-example
spec:
external: true
externalMethod: PortList
externalPorts:
- 22
running: true
instanceType: u1.xlarge
instanceProfile: "ubuntu"
disks:
- name: disk-example #Specificare il nome del vostro disco
resources:
cpu: ""
memory: ""
sshKeys:
- vostra-chiave-pubblica-qui
cloudInit: |
#cloud-config
cloudInitSeed: ""
Attenzione

Sostituite vostra-chiave-pubblica-qui con la vostra vera chiave SSH pubblica!

Distribuite la VMโ€‹

# Creare la macchina virtuale
kubectl apply -f vm-instance.yaml

# Seguire l'avvio
kubectl get vminstance vm-example -w

Comprendere i Metodi di Esposizioneโ€‹

PortList vs WholeIP: Quale differenza?โ€‹

Hikube propone due metodi di esposizione esterna, ciascuno con le sue specificitร :

PortList (Raccomandato)โ€‹

  • Firewall controllato: Solo le porte specificate in externalPorts sono accessibili
  • Sicurezza rafforzata: Protezione automatica contro gli accessi non autorizzati
  • Uso: Produzione, ambienti sicuri
  • Configurazione: externalMethod: PortList + externalPorts: [22, 80, 443]

WholeIPโ€‹

  • Accesso completo: Tutte le porte della VM sono direttamente accessibili
  • Nessun firewall: Nessuna protezione a livello di rete configurata tramite il servizio
  • Uso: Sviluppo, accesso amministrativo completo
  • Configurazione: externalMethod: WholeIP (non รจ necessario externalPorts)
Scelta del Metodo
  • Produzione/Sicuro โ†’ PortList con porte specifiche
  • Sviluppo/Debug โ†’ WholeIP per un accesso completo

๐Ÿ”Œ Passo 3: Accedere alla vostra VM (1 minuto)โ€‹

Installazione di virtctlโ€‹

Se non avete ancora virtctl installato:

# Installazione di virtctl
export VERSION=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64
chmod +x virtctl
sudo mv virtctl /usr/local/bin/

# Verificare l'installazione
virtctl version

Metodi di accessoโ€‹

Opzione 1: SSH Direttoโ€‹

# SSH tramite virtctl (con chiave personalizzata)
virtctl ssh -i ~/.ssh/hikube-vm ubuntu@vm-example
# o SSH tramite IP pubblico (con chiave personalizzata)
ssh -i ~/.ssh/hikube-vm ubuntu@public-ip

Opzione 2: Console Seriale (sempre disponibile)โ€‹

# Accesso console diretto
virtctl console vm-example

Opzione 3: Interfaccia VNCโ€‹

# Accesso grafico
virtctl vnc vm-example

๐ŸŽ‰ Congratulazioniโ€‹

La vostra macchina virtuale Hikube รจ operativa!

Quello che avete realizzato:โ€‹

  • VM Ubuntu distribuita con 4 vCPU / 16 GB RAM
  • Storage persistente di 20 GB replicato
  • Accesso SSH sicuro configurato
  • Connettivitร  esterna attivata
  • Infrastruttura resiliente con separazione compute/storage

Pulizia (Opzionale)โ€‹

Se volete eliminare le risorse create:

# Eliminare la VM (attenzione!)
kubectl delete vminstance vm-example

# Eliminare il disco (attenzione!)
kubectl delete vmdisk disk-example
Eliminazione Irreversibile

L'eliminazione delle VM e dei dischi รจ irreversibile. Assicuratevi di aver salvato tutti i dati importanti prima di procedere.


๐ŸŽฏ Prossimi Passiโ€‹

๐Ÿ“š Configurazione Avanzata โ†’ API Reference completa

๐Ÿ“– Architettura Tecnica โ†’ Comprendere il funzionamento


๐Ÿ’ก Punti Chiave da Ricordare:

  • I vostri dati sono sempre al sicuro grazie alla replica su 3 datacenter
  • La vostra VM puรฒ essere rilocalizzata automaticamente in caso di guasto del nodo
  • L'isolamento totale garantisce la sicurezza tra tenant