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.
-
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Per semplicità di utilizzo, eseguire questo esempio in Bash o PowerShell in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Per usare
azd
localmente, installare la versione 1.6.1 o successiva di Azure Developer CLI.- Se si sta usando Azure Cloud Shell, la versione più recente di
azd
è già installata.
- Se si sta usando Azure Cloud Shell, la versione più recente di
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:
- 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
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
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.
Accedere all'account usando il comando
azd auth login
.azd auth login
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 richiestacurl
all'URL localhost a cui si è stati reindirizzati dopo l'esecuzione di [azd auth login
][az-auth-login].Eseguire l'autenticazione con le credenziali nella pagina di accesso dell'organizzazione.
Confermare che si stia provando a connettersi all'interfaccia della riga di comando di Azure.
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.
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 suhttps://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>.
Copiare l'URL localhost della pagina Web ricevuta dopo il tentativo di accesso con
azd auth login
.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>
Chiudere il terminale corrente e aprire il terminale originale. Verrà visualizzato un elenco JSON delle sottoscrizioni.
Copiare il campo
id
della sottoscrizione da usare.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
Creare tutte le risorse dell'applicazione usando il comando
azd up
.azd up
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)
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
.
Impostare lo spazio dei nomi come spazio dei nomi demo
pets
usando il comandokubectl set-context
.kubectl config set-context --current --namespace=pets
Controllare lo stato dei pod distribuiti usando il comando
kubectl get pods
. Fare in modo che tutti i pod sianoRunning
prima di procedere.kubectl get pods
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
Quando l’indirizzo EXTERNAL-IP passa da in sospeso a un effettivo indirizzo IP pubblico, usare
CTRL-C
per arrestare il processo di controllokubectl
.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
Aprire un browser web all'indirizzo IP esterno del servizio per visualizzare l'applicazione di Azure Store in azione.
Eliminare il cluster
Al termine dell'avvio rapido, eseguire la pulizia delle risorse non necessarie per evitare addebiti di Azure.
Usando il comando
azd down
, eliminare tutte le risorse create in avvio rapido.azd down
Confermare la decisione di rimuovere tutte le risorse usate dalla sottoscrizione digitando
y
e premendoEnter
.? Total resources to delete: 14, are you sure you want to continue? (y/N)
Consentire di rimuovere definitivamente per riutilizzare le variabili di avvio rapido, se applicabile, digitando
y
e premendoEnter
.[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.
Azure Kubernetes Service