Esercitazione: aggiornare un'applicazione nel servizio Azure KubernetesTutorial: Update an application in Azure Kubernetes Service (AKS)

Dopo la distribuzione di un'applicazione in Kubernetes, è possibile aggiornarla specificando una nuova immagine del contenitore o una nuova versione dell'immagine.After an application has been deployed in Kubernetes, it can be updated by specifying a new container image or image version. L'aggiornamento viene eseguito a fasi in modo che solo una parte della distribuzione venga aggiornata nello stesso momento.An update is staged so that only a portion of the deployment is updated at the same time. Questo aggiornamento a fasi consente all'applicazione di rimanere in esecuzione durante l'aggiornamento.This staged update enables the application to keep running during the update. Fornisce inoltre un meccanismo di ripristino dello stato precedente se si verifica un errore di distribuzione.It also provides a rollback mechanism if a deployment failure occurs.

In questa esercitazione, parte sei di sette, viene aggiornata l'app Azure Vote di esempio.In this tutorial, part six of seven, the sample Azure Vote app is updated. Si apprenderà come:You learn how to:

  • Aggiornare il codice dell'applicazione front-endUpdate the front-end application code
  • Creare un'immagine del contenitore aggiornataCreate an updated container image
  • Eseguire il push dell'immagine del contenitore in Registro Azure ContainerPush the container image to Azure Container Registry
  • Distribuire un'immagine del contenitore aggiornataDeploy the updated container image

Prima di iniziareBefore you begin

Nelle esercitazioni precedenti è stato creato un pacchetto di un'applicazione in un'immagine del contenitore.In previous tutorials, an application was packaged into a container image. L'immagine è stata poi caricata in Registro Azure Container ed è stato creato un cluster del servizio Azure Kubernetes.This image was uploaded to Azure Container Registry, and you created an AKS cluster. L'applicazione è stata quindi distribuita nel cluster del servizio Azure Kubernetes.The application was then deployed to the AKS cluster.

È stato clonato anche un repository di applicazione che include il codice sorgente dell'applicazione e un file Docker Compose creato in precedenza usato in questa esercitazione.An application repository was also cloned that includes the application source code, and a pre-created Docker Compose file used in this tutorial. Verificare di aver creato un clone del repository e di aver cambiato le directory nella directory clonata.Verify that you've created a clone of the repo, and have changed directories into the cloned directory. Se questi passaggi non sono stati ancora eseguiti e si vuole procedere, iniziare con l'Esercitazione 1 - Creare immagini del contenitore.If you haven't completed these steps, and want to follow along, start with Tutorial 1 – Create container images.

Per questa esercitazione è necessario eseguire l'interfaccia della riga di comando di Azure versione 2.0.53 o successiva.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Eseguire az --version per trovare la versione.Run az --version to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.If you need to install or upgrade, see Install Azure CLI.

Aggiornare un'applicazioneUpdate an application

Verrà apportata una modifica all'applicazione di esempio, quindi verrà aggiornata la versione già distribuita nel cluster servizio Azure Kubernetes.Let's make a change to the sample application, then update the version already deployed to your AKS cluster. Assicurarsi di essere nella directory clonata azure-voto-app-redis.Make sure that you're in the cloned azure-voting-app-redis directory. Il codice sorgente dell'applicazione di esempio è disponibile nella directory azure-vote.The sample application source code can then be found inside the azure-vote directory. Aprire il file config_file.cfg con un editor, ad esempio vi:Open the config_file.cfg file with an editor, such as vi:

vi azure-vote/azure-vote/config_file.cfg

Sostituire i valori di VOTE1VALUE e VOTE2VALUE con valori diversi, ad esempio colori.Change the values for VOTE1VALUE and VOTE2VALUE to different values, such as colors. L'esempio seguente illustra i valori aggiornati:The following example shows the updated values:

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

Salvare e chiudere il file.Save and close the file. In vi usare :wq.In vi, use :wq.

Aggiornare l'immagine del contenitoreUpdate the container image

Per ricreare l'immagine front-end e testare l'applicazione aggiornata, usare docker-compose.To re-create the front-end image and test the updated application, use docker-compose. L'argomento --build viene usato per indicare a Docker Compose di ricreare l'immagine dell'applicazione:The --build argument is used to instruct Docker Compose to re-create the application image:

docker-compose up --build -d

Testare l'applicazione in localeTest the application locally

Per verificare che l'immagine del contenitore aggiornata mostri le modifiche, aprire un Web browser locale all'indirizzo http://localhost:8080.To verify that the updated container image shows your changes, open a local web browser to http://localhost:8080.

Screenshot che mostra un esempio dell'app Azure Voting con l'immagine del contenitore aggiornata aperta con un Web browser locale e un host locale.

I valori aggiornati specificati nel file config_file.cfg vengono visualizzati nell'applicazione in esecuzione.The updated values provided in the config_file.cfg file are displayed in your running application.

Applicare tag ed eseguire il push dell'immagineTag and push the image

Per usare correttamente l'immagine aggiornata, contrassegnare l'immagine azure-vote-front con il nome del server di accesso di Registro Azure Container.To correctly use the updated image, tag the azure-vote-front image with the login server name of your ACR registry. Ottenere il nome del server di accesso con il comando az acr list:Get the login server name with the az acr list command:

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

Usare docker tag per assegnare il tag all'immagine.Use docker tag to tag the image. 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:Replace <acrLoginServer> with your ACR login server name or public registry hostname, and update the image version to :v2 as follows:

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.Now use docker push to upload the image to your registry. Sostituire <acrLoginServer> con il nome del server di accesso di Registro Azure Container.Replace <acrLoginServer> with your ACR login server name.

Nota

In caso di problemi durante l'esecuzione del push nell'istanza di Registro Azure Container, assicurarsi di essere ancora connessi.If you experience issues pushing to your ACR registry, make sure that you are still logged in. Eseguire il comando az acr login con il nome del Registro Azure Container creato nel passaggio Creare un Registro Azure Container.Run the az acr login command using the name of your Azure Container Registry that you created in the Create an Azure Container Registry step. Ad esempio: az acr login --name <azure container registry name>.For example, az acr login --name <azure container registry name>.

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

Distribuire l'applicazione aggiornataDeploy the updated application

Per garantire il tempo di attività massimo, è necessario eseguire più istanze del pod dell'applicazione.To provide maximum uptime, multiple instances of the application pod must be running. Verificare il numero di istanze front-end in esecuzione con il comando kubectl get pods:Verify the number of running front-end instances with the kubectl get pods command:

$ 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:If you don't have multiple front-end pods, scale the azure-vote-front deployment as follows:

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

Per aggiornare l'applicazione, usare il comando kubectl set.To update the application, use the kubectl set command. Aggiornare <acrLoginServer> con il server di accesso o il nome host del registro contenitori e specificare la versione dell'applicazione v2:Update <acrLoginServer> with the login server or host name of your container registry, and specify the v2 application version:

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.To monitor the deployment, use the kubectl get pod command. Quando l'applicazione aggiornata viene distribuita, le unità vengono terminate e ricreate con la nuova immagine del contenitore.As the updated application is deployed, your pods are terminated and re-created with the new container image.

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:The following example output shows pods terminating and new instances running as the deployment progresses:

$ 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 aggiornataTest the updated application

Per visualizzare l'applicazione aggiornata, ottenere prima l'indirizzo IP esterno del servizio azure-vote-front:To view the update application, first get the external IP address of the azure-vote-front service:

kubectl get service azure-vote-front

Aprire ora un Web browser locale all'indirizzo IP del servizio:Now open a local web browser to the IP address of your service:

Screenshot che mostra un esempio dell'app Azure Voting con l'immagine del contenitore aggiornata aperta con un Web browser locale e un host locale.

Passaggi successiviNext steps

In questa esercitazione è stata aggiornata un'applicazione e l'aggiornamento è stato distribuito in un cluster del servizio Azure Kubernetes.In this tutorial, you updated an application and rolled out this update to your AKS cluster. Si è appreso come:You learned how to:

  • Aggiornare il codice dell'applicazione front-endUpdate the front-end application code
  • Creare un'immagine del contenitore aggiornataCreate an updated container image
  • Eseguire il push dell'immagine del contenitore in Registro Azure ContainerPush the container image to Azure Container Registry
  • Distribuire un'immagine del contenitore aggiornataDeploy the updated container image

Passare all'esercitazione successiva per informazioni su come aggiornare un cluster servizio Azure Kubernetes a una nuova versione di Kubernetes.Advance to the next tutorial to learn how to upgrade an AKS cluster to a new version of Kubernetes.