Lab 05: Distribuire carichi di lavoro di calcolo usando immagini e contenitori

Interfaccia utente di Microsoft Azure

Considerata la natura dinamica degli strumenti cloud di Microsoft, è possibile rilevare modifiche all’interfaccia utente di Azure apportate dopo lo sviluppo di questo contenuto per la formazione. È quindi possibile che le istruzioni e le procedure del lab non siano allineate correttamente.

Microsoft aggiorna questo corso di formazione quando la community segnala le modifiche necessarie. Poiché gli aggiornamenti cloud vengono apportati spesso, tuttavia, è possibile che si rilevino modifiche all’interfaccia utente prima degli aggiornamenti del contenuto per la formazione. In questo caso, adattarsi alle modifiche e quindi eseguire le operazioni necessarie nei lab.

Istruzioni

Prima di iniziare

Accedere all’ambiente lab

Accedere alla macchina virtuale Windows 10 usando le credenziali seguenti:

  • Nome utente: Admin

  • Password: Pa55w.rd

Nota: il docente fornirà le istruzioni necessarie per la connessione all’ambiente lab virtuale.

Esaminare le applicazioni installate

Trovare la barra delle applicazioni nel desktop di Windows 10. La barra delle applicazioni include le icone per le applicazioni che verranno usate nel lab, tra cui:

  • Microsoft Edge

  • Esplora file

Diagramma dell’architettura

Diagramma dell'architettura che illustra la distribuzione di carichi di lavoro di calcolo tramite immagini e contenitori

Esercizio 1: Creare una macchina virtuale usando l’interfaccia della riga di comando di Azure

Attività 1: Aprire il portale di Azure

  1. Sulla barra delle applicazioni selezionare l’icona di Microsoft Edge.

  2. Nella finestra aperta del browser passare al portale di Azure (https://portal.azure.com) e quindi accedere con l’account che verrà usato per questo lab.

    Nota: se si sta eseguendo l’accesso al portale di Azure per la prima volta, verrà visualizzata una presentazione del portale. Selezionare Attività iniziali per ignorare la presentazione e iniziare a usare il portale.

Attività 2: Creare un gruppo di risorse

  1. Nel riquadro di spostamento del portale di Azure usare la casella di testo Cerca risorse, servizi e documentazione per cercare Gruppo di risorse e quindi nell’elenco di risultati selezionare Gruppi di risorse.

  2. Nel pannello Gruppi di risorse selezionare Crea.

  3. Nella scheda Dati principali del pannello Crea un gruppo di risorse eseguire le azioni seguenti e selezionare Rivedi e crea:

    Impostazione Azione
    Elenco a discesa Sottoscrizione Mantenere il valore predefinito
    Casella di testo Gruppo di risorse Immettere ContainerCompute
    Elenco a discesa Area Selezionare (Stati Uniti) Stati Uniti orientali

    Lo screenshot seguente mostra le impostazioni configurate nel pannello Crea un gruppo di risorse.

    Pannello Creare un gruppo di risorse

  4. Nella scheda Rivedi e crea esaminare le opzioni selezionate durante i passaggi precedenti.

  5. Selezionare Crea per creare il gruppo di risorse usando la configurazione specificata.

    Nota: prima di procedere con il lab, attendere il completamento dell’attività di creazione.

Attività 3: Aprire Azure Cloud Shell

  1. Nel portale di Azure selezionare l’icona di Cloud Shell Icona di Cloud Shell per aprire una nuova sessione di PowerShell. Se in Cloud Shell viene aperta per impostazione predefinita una sessione di PowerShell, selezionare PowerShell e nel menu a discesa selezionare Bash.

    Nota: l’icona Cloud Shell è rappresentata da un segno di maggiore (>) e un carattere di sottolineatura (_).

    Nota: se è la prima volta che si avvia Cloud Shell, quando viene richiesto di selezionare Bash o PowerShell selezionare Bash. Quando viene visualizzato il messaggio Non sono state montate risorse di archiviazione, selezionare la sottoscrizione usata in questo lab e quindi selezionare Crea risorsa di archiviazione.

  2. Al prompt dei comandi di Cloud Shell nel portale eseguire il comando seguente per ottenere la versione dello strumento dell’interfaccia della riga di comando di Azure:

    az --version
    

Attività 4: Usare i comandi dell’interfaccia della riga di comando di Azure

  1. Eseguire il comando seguente per ottenere un elenco di sottogruppi e comandi a livello radice dell’interfaccia della riga di comando:

    az --help
    
  2. Eseguire il comando seguente per ottenere un elenco di sottogruppi e comandi per le macchine virtuali di Azure:

    az vm --help
    
  3. Eseguire il comando seguente per ottenere un elenco di argomenti ed esempi per il comando Crea macchina virtuale:

    az vm create --help
    
  4. Eseguire il comando seguente per creare una nuova macchina virtuale con le impostazioni seguenti. Assicurarsi di prendere nota della password che viene richiesto di creare di seguito, che sarà necessaria in un secondo momento nel lab per accedere alla macchina virtuale:

    • Gruppo di risorse: ContainerCompute

    • Nome: quickvm

    • Immagine: Debian

    • Nome utente amministratore: student

    • Password amministratore: <CreateYourPassword>

    Nota: sostituire <CreateYourPassword> nel comando seguente con la password creata.

    az vm create --resource-group ContainerCompute --name quickvm --image Debian --admin-username student --admin-password <CreateYourPassword>
    

    Nota: attendere che la macchina virtuale venga creata. Al termine del processo, il comando restituirà un file JavaScript Object Notation (JSON) contenente i dettagli sul computer.

  5. Eseguire il comando seguente per ottenere un file JSON più dettagliato contenente vari metadati sulla macchina virtuale appena creata:

    az vm show --resource-group ContainerCompute --name quickvm
    
  6. Eseguire il comando seguente per elencare tutti gli indirizzi IP associati alla macchina virtuale:

    az vm list-ip-addresses --resource-group ContainerCompute --name quickvm
    
  7. Eseguire il comando seguente per filtrare l’output in modo da restituire solo il primo valore dell’indirizzo IP:

    az vm list-ip-addresses --resource-group ContainerCompute --name quickvm --query '[].{ip:virtualMachine.network.publicIpAddresses[0].ipAddress}' --output tsv
    
  8. Eseguire il comando seguente per archiviare i risultati del comando precedente in una nuova variabile della shell Bash denominata ipAddress:

    ipAddress=$(az vm list-ip-addresses --resource-group ContainerCompute --name quickvm --query '[].{ip:virtualMachine.network.publicIpAddresses[0].ipAddress}' --output tsv)
    
  9. Eseguire il comando seguente per eseguire il rendering del valore della variabile della shell Bash ipAddress:

    echo $ipAddress
    
  10. Eseguire il comando seguente per connettersi alla macchina virtuale creata in precedenza in questo lab usando lo strumento Secure Shell (SSH) e l’indirizzo IP archiviato nella variabile della shell Bash ipAddress:

    ssh student@$ipAddress
    
  11. Lo strumento SSH informa l’utente che l’autenticità dell’host non può essere stabilita e quindi chiede se si vuole continuare la connessione. Immettere e quindi premere INVIO per continuare a connettersi alla macchina virtuale.

  12. Lo strumento SSH richiede quindi una password. Immettere la password creata in precedenza e quindi premere INVIO per eseguire l’autenticazione per la macchina virtuale.

  13. Dopo la connessione alla macchina virtuale tramite SSH, eseguire il comando seguente per ottenere i metadati che descrivono la macchina virtuale Linux:

    uname -a
    
  14. Usare il comando exit per terminare la sessione SSH:

    exit
    
  15. Chiudere il riquadro Cloud Shell nel portale.

Verifica

In questo esercizio è stato usato Cloud Shell per creare una macchina virtuale come parte di uno script automatizzato.

Esercizio 2: Creare un’immagine del contenitore Docker e distribuirla in Registro Azure Container

Attività 1: Aprire Cloud Shell e l’editor

  1. Nel riquadro di spostamento del portale di Azure selezionare l’icona di Cloud Shell per aprire una nuova istanza Shell.

    Nota: attendere che Cloud Shell completi la connessione a un’istanza prima di procedere con il lab.

  2. Nel prompt dei comandi Cloud Shell nel portale eseguire questo comando per passare dalla directory radice alla directory ~/clouddrive:

    cd ~/clouddrive
    
  3. Eseguire il comando seguente per creare una nuova directory denominata ipcheck nella directory ~/clouddrive:

    mkdir ipcheck
    
  4. Eseguire il comando seguente per modificare la directory attiva da ~/clouddrive a ~/clouddrive/ipcheck:

    cd ~/clouddrive/ipcheck
    
  5. Usare il comando seguente per creare una nuova applicazione console .NET nella directory corrente:

    dotnet new console --output . --name ipcheck --framework net6.0
    
  6. Usare il comando seguente per creare un nuovo file nella directory ~/clouddrive/ipcheck denominata Dockerfile:

    touch Dockerfile
    
  7. Eseguire il comando seguente per aprire l’editor grafico incorporato nel contesto della directory corrente:

    code .
    

Attività 2: Creare e testare un’applicazione .NET

  1. Nel riquadro FILES dell’editor grafico selezionare il file Program.cs per aprirlo nell’editor.

  2. Eliminare l’intero contenuto del file Program.cs.

  3. Copiare il codice seguente e incollarlo nel file Program.cs:

    public class Program
    {
        public static void Main(string[] args)
        {        
            // Check if network is available
            if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
            {
                System.Console.WriteLine("Current IP Addresses:");
    
                // Get host entry for current hostname
                string hostname = System.Net.Dns.GetHostName();
                System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(hostname);
                    
                // Iterate over each IP address and render their values
                foreach(System.Net.IPAddress address in host.AddressList)
                {
                    System.Console.WriteLine($"\t{address}");
                }
            }
            else
            {
                System.Console.WriteLine("No Network Connection");
            }
        }
    }
    
  4. Salvare il file Program.cs usando il menu nell’editor grafico o i tasti di scelta rapida CTRL+S. Non chiudere l’editor grafico.

  5. Di nuovo nel prompt dei comandi usare il comando seguente per eseguire l’applicazione:

    dotnet run
    
  6. Esaminare i risultati dell’esecuzione. Per l’istanza di Cloud Shell deve essere elencato almeno un indirizzo IP.

  7. Nel riquadro FILES dell’editor selezionare il file Dockerfile per aprirlo nell’editor.

  8. Copiare e incollare il codice seguente nel file Dockerfile:

    # Start using the .NET 6 SDK container image
    FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
    
    # Change current working directory
    WORKDIR /app
    
    # Copy existing files from host machine
    COPY . ./
    
    # Publish application to the "out" folder
    RUN dotnet publish --configuration Release --output out
    
    # Start container by running application DLL
    ENTRYPOINT ["dotnet", "out/ipcheck.dll"]
    
  9. Salvare il file Dockerfile usando il menu nell’editor grafico o i tasti di scelta rapida CTRL+S.

  10. Lasciare aperto Cloud Shell per l’attività successiva.

Attività 3: Creare una risorsa Registro Container

  1. Al prompt dei comandi di Cloud Shell nel portale eseguire il comando seguente per creare una variabile con un valore univoco per la risorsa Registro contenitori:

     registryName=conregistry$RANDOM
    
  2. Al prompt dei comandi di Cloud Shell nel portale eseguire il comando seguente per verificare che il nome creato nel passaggio precedente sia disponibile:

     az acr check-name --name $registryName
    

    Se il nome risulta disponibile, continuare con il passaggio successivo. Se il nome non è disponibile, eseguire nuovamente il comando nel passaggio precedente e verificare nuovamente la disponibilità.

  3. Al prompt dei comandi di Cloud Shell nel portale eseguire il comando seguente per creare una risorsa Registro contenitori:

     az acr create --resource-group ContainerCompute --name $registryName --sku Basic
    

    Nota: prima di procedere con il lab, attendere il completamento dell’attività di creazione.

Attività 4: Memorizzare i metadati di Registro contenitori

  1. Al prompt dei comandi di Cloud Shell nel portale eseguire il comando seguente per ottenere un elenco di tutti i registri contenitori nella sottoscrizione:

    az acr list
    
  2. Eseguire il comando seguente, assicurandosi di visualizzare il nome del registro come output. Se non viene visualizzato alcun output diverso da ‘[]’, attendere un minuto e provare a eseguire di nuovo il comando.

    az acr list --query "max_by([], &creationDate).name" --output tsv
    
  3. Eseguire il comando seguente:

    acrName=$(az acr list --query "max_by([], &creationDate).name" --output tsv)
    
  4. Eseguire il comando seguente:

    echo $acrName
    

Attività 5: Distribuire un’immagine del contenitore Docker in Registro Azure Container.

  1. Eseguire il comando seguente per modificare la directory attiva da ~/ a ~/clouddrive/ipcheck:

    cd ~/clouddrive/ipcheck
    
  2. Eseguire il comando seguente per ottenere il contenuto della directory corrente:

    dir
    
  3. Eseguire il comando seguente per caricare il codice sorgente nel registro contenitori e compilare l’immagine del contenitore come attività di Registro Container:

    az acr build --registry $acrName --image ipcheck:latest .
    

    Nota: prima di procedere con il lab, attendere il completamento dell’attività di compilazione.

  4. Chiudere il riquadro Cloud Shell nel portale.

Attività 6: Convalidare l’immagine del contenitore in Registro Container

  1. Nel riquadro di spostamento del portale di Azure selezionare il collegamento Gruppi di risorse.

  2. Nel pannello Gruppi di risorse selezionare il gruppo di risorse ContainerCompute creato in precedenza in questo lab.

  3. Nel pannello ContainerCompute selezionare il registro contenitori creato in precedenza in questo lab.

  4. Nella sezione Servizi del pannello Registro container selezionare il collegamento Repository.

  5. Nella sezione Repository selezionare il repository di immagini del contenitore ipcheck e quindi selezionare il tag latest.

  6. Esaminare i metadati per la versione dell’immagine del contenitore con il tag latest.

    Nota: è anche possibile selezionare il collegamento ID esecuzione per trovare i metadati relativi all’attività di compilazione.

Verifica

In questo esercizio è stata creata un’applicazione console .NET per visualizzare l’indirizzo IP corrente di un computer. Il file Dockerfile è stato quindi aggiunto all’applicazione per essere convertito in un’immagine del contenitore Docker. Infine, l’immagine del contenitore è stata distribuita in Registro Container.

Esercizio 3: Distribuire un’istanza di contenitore di Azure

Attività 1: Abilitare l’utente amministratore in Registro Container

  1. Nel riquadro di spostamento del portale di Azure selezionare il collegamento Gruppi di risorse.

  2. Nel pannello Gruppi di risorse selezionare il gruppo di risorse ContainerCompute creato in precedenza in questo lab.

  3. Nel pannello ContainerCompute selezionare il registro contenitori creato in precedenza in questo lab, quindi selezionare Aggiorna.

  4. Nella sezione Utente amministratore del pannello Aggiorna registro contenitori selezionare Abilita.

  5. Selezionare Salva e quindi chiudere il pannello Aggiorna registro contenitori.

Attività 2: Distribuire automaticamente un’immagine del contenitore in un’istanza del contenitore di Azure

  1. Nella sezione Servizi del pannello Registro container selezionare il collegamento Repository.

  2. Nella sezione Repository selezionare il repository di immagini del contenitore ipcheck.

  3. Nel pannello Repository selezionare il menu con i puntini di sospensione associato alla voce del tag latest e quindi selezionare Esegui istanza.

  4. Nel pannello Crea istanza di Container eseguire le azioni seguenti e selezionare Crea:

    Impostazione Azione
    Casella di testo Nome contenitore Immettere managedcompute
    Casella di testo Immagine contenitore Mantenere il valore predefinito
    Sezione Tipo di sistema operativo Selezionare Linux.
    Casella di testo Sottoscrizione Mantenere il valore predefinito
    Elenco a discesa Gruppo di risorse Selezionare ContainerCompute.
    Elenco a discesa Posizione Selezionare Stati Uniti orientali.
    Elenco a discesa Numero di core Selezionare 2.
    Casella di testo Memoria (GB) Immettere 4.
    Sezione Indirizzo IP pubblico Selezionare No

    Lo screenshot seguente mostra le impostazioni configurate nel pannello Crea istanza di Container.

    Pannello Crea istanza di Container

    Nota: attendere la creazione dell’istanza del contenitore prima di continuare con questo lab.

Attività 3: Distribuire manualmente un’immagine del contenitore in Istanze di Container

  1. Nel riquadro di spostamento del portale di Azure selezionare il collegamento Crea una risorsa.

  2. Nel pannello Crea una risorsa, nella casella di testo Cerca servizi e marketplace, immettere istanze di Container e quindi premere INVIO.

  3. Nel pannello dei risultati della ricerca Marketplace selezionare il risultato Istanze di Container.

  4. Nel pannello Istanze di Container selezionare Crea.

  5. Nella scheda Dati principali del pannello Crea istanza di Container eseguire le azioni seguenti e selezionare Rivedi e crea:

    Impostazione Azione
    Elenco a discesa Sottoscrizione Mantenere il valore predefinito
    Elenco a discesa Gruppo di risorse Selezionare ContainerCompute.
    Casella di testo Nome contenitore  Immettere manualcompute
    Elenco a discesa Area Selezionare (Stati Uniti) Stati Uniti orientali
    Sezione Origine immagine Selezionare Registro Azure Container
    Elenco a discesa Registro Selezionare la risorsa Registro Azure Container creata in precedenza in questo lab
    Elenco a discesa Immagine Selezionare ipcheck
    Elenco a discesa Tag immagine Selezionare latest

    Lo screenshot seguente mostra le impostazioni configurate nel pannello Crea istanza di Container.

    Pannello Crea istanza di Container

  6. Nella scheda Rivedi e crea esaminare le opzioni selezionate.

  7. Selezionare Crea per creare l’istanza di contenitore usando la configurazione specificata.

    Nota: attendere la creazione dell’istanza del contenitore prima di continuare con questo lab.

Attività 4: Verificare che l’istanza di contenitore sia stata eseguita correttamente

  1. Nel riquadro di spostamento del portale di Azure selezionare il collegamento Gruppi di risorse.

  2. Nel pannello Gruppi di risorse selezionare il gruppo di risorse ContainerCompute creato in precedenza in questo lab.

  3. Nel pannello ContainerCompute selezionare l’istanza di contenitore manualcompute creata in precedenza in questo lab.

  4. Nella sezione Impostazioni del pannello Istanze di Container selezionare il collegamento Contenitori.

  5. Nella sezione Contenitori esaminare l’elenco di eventi.

  6. Selezionare la scheda Log e quindi esaminare i log di testo dall’istanza di contenitore.

Nota: è anche possibile trovare gli eventi e i log dall’istanza di contenitore managedcompute.

Nota: a questo punto è possibile che manualcompute e managedcompute non contengano eventi.

Nota: al termine dell’esecuzione dell’applicazione, il contenitore termina perché ha completato il lavoro. Per l’istanza di contenitore creata manualmente, è stato indicato che un’uscita riuscita era accettabile, quindi il contenitore è stato eseguito una sola volta. L’istanza creata automaticamente non offriva questa opzione e presuppone che il contenitore sia sempre in esecuzione, quindi si noteranno ripetuti riavvii del contenitore.

Verifica

In questo esercizio sono stati usati più metodi per distribuire un’immagine del contenitore in un’istanza di Azure Container. Usando il metodo manuale è stato possibile personalizzare ulteriormente la distribuzione ed eseguire applicazioni basate su attività come parte di un’esecuzione del contenitore.

Esercizio 4: Pulire la sottoscrizione

Attività 1: Aprire Azure Cloud Shell ed elencare i gruppi di risorse

  1. Nel portale di Azure selezionare l’icona di Cloud Shell Icona di Cloud Shell per aprire una nuova sessione di Bash. Se in Cloud Shell viene aperta per impostazione predefinita una sessione di PowerShell, selezionare PowerShell e nel menu a discesa selezionare Bash.

    Nota: se è la prima volta che si avvia Cloud Shell, quando viene richiesto di selezionare Bash oppure PowerShell selezionare PowerShell. Quando viene visualizzato il messaggio Non sono state montate risorse di archiviazione, selezionare la sottoscrizione usata in questo lab e quindi selezionare Crea risorsa di archiviazione.

Attività 2: Eliminare i gruppi di risorse

  1. Nel riquadro Cloud Shell eseguire il comando seguente per eliminare il gruppo di risorse ContainerCompute:

    az group delete --name ContainerCompute --no-wait --yes
    

Nota: il comando viene eseguito in modo asincrono, in base a quanto determinato dal parametro –no-wait, quindi, sebbene sia possibile eseguire un altro comando dell’interfaccia della riga di comando di Azure immediatamente dopo nella stessa sessione Bash, il gruppo di risorse verrà effettivamente rimosso dopo alcuni minuti.

  1. Chiudere il riquadro Cloud Shell nel portale.

Attività 3: Chiudere le applicazioni attive

  • Chiudere l’applicazione Microsoft Edge in esecuzione.

Verifica

In questo esercizio è stata pulita la sottoscrizione mediante la rimozione dei gruppi di risorse usati in questo lab.