Condividi tramite


Avvio rapido: distribuire un cluster del servizio Azure Kubernetes tramite Azure Developer CLI

Il servizio Azure Kubernetes è un servizio Kubernetes gestito che permette di distribuire e gestire rapidamente i cluster. Con questa guida introduttiva, si potrà:

  • Scaricare e installare Azure Developer CLI (azd).
  • Clonare le applicazioni da un modello di Azure Developer CLI (azd modello).
  • Distribuire un cluster del servizio Azure Kubernetes tramite Azure Developer CLI (azd).
  • Eseguire un'applicazione multi-contenitore di esempio con un gruppo di microservizi che simula un'app per la vendita al dettaglio.
  • Eliminare e pulire i contenitori creati dal modello azd.

Nota

Per iniziare ad effettuare un veloce provisioning di un cluster del servizio Azure Kubernetes, questo articolo include i passaggi per la distribuzione di un cluster con impostazioni predefinite a solo scopo di valutazione. Prima di distribuire un cluster pronto per la produzione, è consigliabile acquisire familiarità con l'architettura di riferimento di base per valutare il modo in cui è allineato ai requisiti aziendali.

Operazioni preliminari

Questa guida introduttiva presuppone una comprensione di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base relativi a Kubernetes per il servizio Azure Kubernetes.

Revisione del codice dell'applicazione

È possibile rivedere il codice dell'applicazione nel repository GitHub Azure-Samples/aks-store-demo.

L'applicazione di avvio rapido include le distribuzioni e i servizi Kubernetes seguenti:

Diagramma che mostra l'architettura di esempio di Microsoft Azure Store.

  • Front-store: applicazione Web per i clienti per visualizzare i prodotti ed effettuare ordini.
  • Servizio prodotto: mostra le informazioni sul prodotto.
  • Servizio ordini: effettua ordini.
  • Rabbit MQ: coda di messaggi per una coda di ordini.

Nota

Non è consigliabile eseguire contenitori con stato, ad esempio Rabbit MQ, senza l'archiviazione permanente per la produzione. Per ragioni di semplicità, qui vengono usati questi servizi, ma è consigliabile ricorrere a servizi gestiti, ad esempio Azure Cosmos DB o bus di servizio di Azure.

Clonare il modello di Azure Developer CLI

  1. Clonare il modello demo dell'archivio del servizio Azure Kubernetes dal repository Azure-Samples usando il comando azd init con il parametro --template.

    azd init --template Azure-Samples/aks-store-demo
    
  2. Immettere un nome di ambiente per il progetto che usi solo caratteri alfanumerici e trattini, ad esempio aks-azdqs-1.

    Enter a new environment name: aks-azdqs-1
    

Accedere all'account Cloud di Azure

Il modello azd contiene tutto il codice necessario per creare i servizi, ma per ospitare l'applicazione nel servizio Azure Kubernetes è necessario accedere all'account Azure.

  1. Accedere all'account usando il comando azd auth login.

    azd auth login
    
  2. Copiare il codice del dispositivo visualizzato nell'output e premere INVIO per accedere.

    Start by copying the next code: XXXXXXXXX
    Then press enter and continue to log in from your browser...
    

    Importante

    Se si usa una macchina virtuale fuori rete o GitHub codespace, alcuni criteri di sicurezza di Azure, quando vengono usati per accedere con azd auth login, causano conflitti. Se in questo caso si verifica un problema, è possibile seguire la soluzione alternativa azd auth fornita di seguito, che prevede l'uso di una richiesta curl all'URL localhost a cui si è stati reindirizzati dopo l'esecuzione di [azd auth login][az-auth-login].

  3. Eseguire l'autenticazione con le credenziali nella pagina di accesso dell'organizzazione.

  4. Confermare che si stia provando a connettersi all'interfaccia della riga di comando di Azure.

  5. Verificare il messaggio “Autenticazione del codice del dispositivo completata. Connesso ad Azure.” viene visualizzato nel terminale originale.

    Waiting for you to complete authentication in the browser...
    Device code authentication completed.
    Logged in to Azure.
    

Soluzione alternativa azd auth

Questa soluzione alternativa richiede l'installazione dell'interfaccia della riga di comando di Azure.

  1. Aprire una finestra del terminale e accedere con l'interfaccia della riga di comando di Azure usando il comando az login con il parametro --scope impostato su https://graph.microsoft.com/.default.

    az login --scope https://graph.microsoft.com/.default
    

    Si dovrebbe essere reindirizzati a una pagina di autenticazione in una nuova scheda per creare un token di accesso al browser, come nell'esempio seguente:

    https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
    
  2. Copiare l'URL localhost della pagina Web ricevuta dopo il tentativo di accesso con azd auth login.

  3. In una nuova finestra del terminale usare la seguente richiesta curl per accedere. Assicurarsi di sostituire il segnaposto <localhost> con l'URL localhost copiato nel passaggio precedente.

    curl <localhost>
    

    Un account di accesso riuscito restituisce una pagina Web HTML, come nell'esempio seguente:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/">
        <title>Login successfully</title>
        <style>
            body {
                font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            }
    
            code {
                font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
                display: inline-block;
                background-color: rgb(242, 242, 242);
                padding: 12px 16px;
                margin: 8px 0px;
            }
        </style>
    </head>
    <body>
        <h3>You have logged into Microsoft Azure!</h3>
        <p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p>
        <h3>Announcements</h3>
        <p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p>
        <p>You may opt-in to use WAM by running the following commands:</p>
        <code>
            az config set core.allow_broker=true<br>
            az account clear<br>
            az login
        </code>
    </body>
    </html>
    
  4. Chiudere il terminale corrente e aprire il terminale originale. Verrà visualizzato un elenco JSON delle sottoscrizioni.

  5. Copiare il campo id della sottoscrizione da usare.

  6. Impostare la sottoscrizione usando il comando az account set.

    az account set --subscription <subscription_id>
    

Creare e distribuire le risorse per il cluster

azd esegue tutti gli hook all'interno della azd-hooks cartella per pre-registrare, effettuare il provisioning e distribuire i servizi dell'applicazione.

Il modello azd per questo avvio rapido crea un nuovo gruppo di risorse con un cluster del servizio Azure Kubernetes e un insieme di credenziali chiave di Azure. L'insieme di credenziali delle chiavi archivia i segreti client ed esegue i servizi nello spazio dei nomi pets

  1. Creare tutte le risorse dell'applicazione usando il comando azd up.

    azd up
    
  2. Selezionare una sottoscrizione di Azure per l'utilizzo della fatturazione.

    ? Select an Azure Subscription to use:  [Use arrows to move, type to filter]
    > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
    
  3. Selezionare un'area in cui distribuire l'applicazione.

    Select an Azure location to use:  [Use arrows to move, type to filter]
      1.  (South America) Brazil Southeast (brazilsoutheast)
      2.  (US) Central US (centralus)
      3.  (US) East US (eastus)
    > 43. (US) East US 2 (eastus2)
      4.  (US) East US STG (eastusstg)
      5.  (US) North Central US (northcentralus)
      6.  (US) South Central US (southcentralus)
    

    azd esegue automaticamente i comandi di preprovisioning e postprovisioning per creare le risorse per l'applicazione. Questo processo può richiedere alcuni minuti. Al termine, sarà visualizzato un output simile all'esempio seguente:

    SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
    

Testare l'applicazione

Quando l'applicazione viene eseguita, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Questo processo può richiedere alcuni minuti. Per gestire un cluster Kubernetes, usare il client da riga di comando kubernetes kubectl. kubectl è già installato durante azd up.

  1. Impostare lo spazio dei nomi come spazio dei nomi demo pets usando il comando kubectl set-context.

    kubectl config set-context --current --namespace=pets
    
  2. Controllare lo stato dei pod distribuiti usando il comando kubectl get pods. Fare in modo che tutti i pod siano Running prima di procedere.

    kubectl get pods
    
  3. Verificare la presenza di un indirizzo IP pubblico per l'applicazione vetrina e monitorare lo stato di avanzamento usando il kubectl get service comando con l'argomento --watch.

    kubectl get service store-front --watch
    

    L'output EXTERNAL-IP per il servizio store-front inizialmente viene visualizzato come in sospeso:

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   <pending>     80:30025/TCP   4h4m
    
  4. Quando l’indirizzo EXTERNAL-IP passa da in sospeso a un effettivo indirizzo IP pubblico, usare CTRL-C per arrestare il processo di controllo kubectl.

    L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   20.62.159.19   80:30025/TCP   4h5m
    
  5. Aprire un browser web all'indirizzo IP esterno del servizio per visualizzare l'applicazione di Azure Store in azione.

    Screenshot dell'applicazione di esempio dello Store del servizio Azure Kubernetes.

Eliminare il cluster

Al termine dell'avvio rapido, eseguire la pulizia delle risorse non necessarie per evitare addebiti di Azure.

  1. Usando il comando azd down, eliminare tutte le risorse create in avvio rapido.

    azd down
    
  2. Confermare la decisione di rimuovere tutte le risorse usate dalla sottoscrizione digitando y e premendo Enter.

    ? Total resources to delete: 14, are you sure you want to continue? (y/N)
    
  3. Consentire di rimuovere definitivamente per riutilizzare le variabili di avvio rapido, se applicabile, digitando y e premendo Enter.

    [Warning]: These resources have soft delete enabled allowing them to be recovered for a period or time after deletion. During this period, their names may not be reused. In the future, you can use the argument --purge to skip this confirmation.
    
    ? Would you like to permanently delete these resources instead, allowing their names to be reused? (y/N)
    

    Una volta eliminate le risorse, verrà visualizzato un output simile all'esempio seguente:

    SUCCESS: Your application was removed from Azure in 14 minutes 30 seconds.
    

Nota

Questa applicazione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per le applicazioni Kubernetes. Per indicazioni sulla creazione di soluzioni complete con il servizio Azure Kubernetes per la produzione, vedere Linee guida per le soluzioni del servizio Azure Kubernetes.

Passaggi successivi

In questa guida introduttiva, è stato distribuito un cluster Kubernetes, successivamente è stata distribuita una semplice applicazione multi-contenitore. Questa applicazione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per le applicazioni Kubernetes. Per indicazioni sulla creazione di soluzioni complete con il servizio Azure Kubernetes per la produzione, vedere Linee guida per le soluzioni del servizio Azure Kubernetes.

Per altre informazioni sul servizio Azure Kubernetes e per un esempio completo di distribuzione del codice, passare all'esercitazione sul cluster Kubernetes.