Esercitazione: Aggiornare un'applicazione in servizio Azure Kubernetes in Azure Stack HCI e Windows Server

Dopo aver distribuito un'applicazione in Kubernetes in servizio Azure Kubernetes (AKS) in Azure Stack HCI e Windows Server, è possibile aggiornarla specificando una nuova immagine del contenitore o una nuova versione dell'immagine. È consigliabile preparare un aggiornamento in modo che solo una parte della distribuzione venga aggiornata contemporaneamente. Questo aggiornamento a fasi consente all'applicazione di rimanere in esecuzione durante l'aggiornamento. Fornisce inoltre un meccanismo di ripristino dello stato precedente se si verifica un errore di distribuzione.

Questa esercitazione, parte sei di sette, descrive come aggiornare l'app Azure Vote di esempio. Si apprenderà come:

  • Aggiornare il codice dell'applicazione front-end
  • Creare un'immagine del contenitore aggiornata
  • Eseguire il push dell'immagine del contenitore in Registro Azure Container
  • Distribuire un'immagine del contenitore aggiornata

Prima di iniziare

Nelle esercitazioni precedenti si è appreso come:

  • Creare un pacchetto di un'applicazione in un'immagine contenitore e caricare l'immagine in Registro Azure Container.
  • Creare un servizio Azure Kubernetes nel cluster Azure Stack HCI e distribuire l'applicazione nel cluster.
  • Clonare un repository di applicazioni che include il codice sorgente dell'applicazione e un file di Docker Compose creato in modo preliminare che è possibile usare in questa esercitazione.

Verificare di aver creato un clone del repository e di aver cambiato le directory nella directory clonata. Se questi passaggi non sono stati completati, iniziare con Esercitazione 1 - Creare immagini del contenitore.

Per questa esercitazione è necessario eseguire l'interfaccia della riga di comando di Azure versione 2.0.53 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Aggiornare un'applicazione

Questa sezione descrive come apportare una modifica all'applicazione di esempio e quindi aggiornare la versione già distribuita nel servizio Azure Kubernetes in Azure Stack HCI e nel cluster Windows Server. Assicurarsi di essere nella directory clonata azure-voto-app-redis. Il codice sorgente dell'applicazione di esempio è disponibile nella directory azure-vote. Aprire il file config_file.cfg con un editor, ad esempio notepad:

notepad azure-vote/azure-vote/config_file.cfg

Sostituire i valori di VOTE1VALUE e VOTE2VALUE con valori diversi, ad esempio colori. L'esempio seguente illustra i valori aggiornati:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

Salvare e chiudere il file.

Aggiornare l'immagine del contenitore

Per ricreare l'immagine front-end e testare l'applicazione aggiornata, usare docker-compose. L'argomento --build viene usato per ricreare l'immagine dell'applicazione:

docker-compose up --build -d

Testare l'applicazione in locale

Per verificare che l'immagine del contenitore aggiornata mostri le modifiche, aprire un Web browser locale all'indirizzo http://localhost:8080.

Screenshot showing an example of the updated container image Azure Voting App running locally opened in a local web browser

I valori aggiornati specificati nel file config_file.cfg vengono visualizzati nell'applicazione in esecuzione.

Applicare tag ed eseguire il push dell'immagine

Per usare correttamente l'immagine aggiornata, contrassegnare l'immagine azure-vote-front con il nome del server di accesso di Registro Azure Container. Ottenere il nome del server di accesso con il comando az acr list:

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

Usare docker tag per assegnare il tag all'immagine. Sostituire <acrLoginServer> con il nome del server di accesso di Registro Azure Container o con il nome host del registro pubblico e aggiornare la versione dell'immagine a :v2 come di seguito:

docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2

Usare ora docker push per caricare l'immagine nel registro. Sostituire <acrLoginServer> con il nome del server di accesso di Registro Azure Container.

Nota

In caso di problemi durante l'esecuzione del push nell'istanza di Registro Azure Container, assicurarsi di essere ancora connessi. Eseguire il comando az acr login con il nome del Registro Azure Container creato nel passaggio Creare un Registro Azure Container. Ad esempio: az acr login --name <azure container registry name>.

docker push <acrLoginServer>/azure-vote-front:v2

Distribuire l'applicazione aggiornata

Per garantire il tempo di attività massimo, è necessario eseguire più istanze del pod dell'applicazione. Verificare il numero di istanze front-end in esecuzione con il comando kubectl get pods:

$ kubectl get pods

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-217588096-5w632    1/1       Running   0          10m
azure-vote-front-233282510-b5pkz   1/1       Running   0          10m
azure-vote-front-233282510-dhrtr   1/1       Running   0          10m
azure-vote-front-233282510-pqbfk   1/1       Running   0          10m

Se non si hanno più pod front-end, ridimensionare la distribuzione azure-vote-front come di seguito:

kubectl scale --replicas=3 deployment/azure-vote-front

Per aggiornare l'applicazione, usare il comando kubectl set. Aggiornare <acrLoginServer> con il server di accesso o il nome host del registro contenitori e specificare la versione dell'applicazione v2:

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2

Per monitorare la distribuzione, utilizzare il comando kubectl get pod. Quando l'applicazione aggiornata viene distribuita, le unità vengono terminate e ricreate con la nuova immagine del contenitore.

kubectl get pods

L'output di esempio seguente illustra i pod con arresto in corso e le nuove istanze in esecuzione durante l'avanzamento della distribuzione:

$ kubectl get pods

NAME                               READY     STATUS        RESTARTS   AGE
azure-vote-back-2978095810-gq9g0   1/1       Running       0          5m
azure-vote-front-1297194256-tpjlg  1/1       Running       0          1m
azure-vote-front-1297194256-tptnx  1/1       Running       0          5m
azure-vote-front-1297194256-zktw9  1/1       Terminating   0          1m

Testare l'applicazione aggiornata

Per visualizzare l'applicazione aggiornata, ottenere prima l'indirizzo IP esterno del servizio azure-vote-front:

kubectl get service azure-vote-front

Aprire quindi un Web browser all'indirizzo IP del servizio:

Screenshot showing an example of the updated image Azure Voting App running in an AKS cluster opened in a local web browser.

Passaggi successivi

In questa esercitazione è stata aggiornata un'applicazione e l'aggiornamento è stato distribuito in un cluster del servizio Azure Kubernetes. Si è appreso come:

  • Aggiornare il codice dell'applicazione front-end
  • Creare un'immagine del contenitore aggiornata
  • Eseguire il push dell'immagine del contenitore in Registro Azure Container
  • Distribuire un'immagine del contenitore aggiornata

Passare all'esercitazione successiva per informazioni su come aggiornare un cluster servizio Azure Kubernetes a una nuova versione di Kubernetes.