Tutorial: atualizar um aplicativo no Serviço de Kubernetes do Azure (AKS)Tutorial: Update an application in Azure Kubernetes Service (AKS)

Depois que um aplicativo foi implantado no Kubernetes, ele pode ser atualizado especificando uma nova imagem de contêiner ou versão de imagem.After an application has been deployed in Kubernetes, it can be updated by specifying a new container image or image version. Uma atualização é preparada para que apenas uma parte da implantação seja atualizada ao mesmo tempo.An update is staged so that only a portion of the deployment is updated at the same time. Essa atualização em etapas permite que o aplicativo continue em execução durante a atualização.This staged update enables the application to keep running during the update. Ela também oferece um mecanismo de reversão, caso ocorra uma falha de implantação.It also provides a rollback mechanism if a deployment failure occurs.

Neste tutorial, parte seis de sete, o aplicativo de exemplo Azure Vote é atualizado.In this tutorial, part six of seven, the sample Azure Vote app is updated. Você aprenderá como:You learn how to:

  • Atualizar o código do aplicativo front-endUpdate the front-end application code
  • Criar uma imagem de contêiner atualizadaCreate an updated container image
  • Efetuar push da imagem de contêiner para o Registro de Contêiner do AzurePush the container image to Azure Container Registry
  • Implantar a imagem de contêiner atualizadaDeploy the updated container image

Antes de começarBefore you begin

Nos tutoriais anteriores, um aplicativo foi empacotado em uma imagem de contêiner.In previous tutorials, an application was packaged into a container image. Essa imagem foi carregada no Registro de Contêiner do Azure e você criou um cluster do AKS.This image was uploaded to Azure Container Registry, and you created an AKS cluster. O aplicativo foi então implantado no cluster do AKS.The application was then deployed to the AKS cluster.

Um repositório de aplicativo também foi clonado, que inclui o código-fonte do aplicativo e um arquivo do Docker Compose pré-criado usado neste tutorial.An application repository was also cloned that includes the application source code, and a pre-created Docker Compose file used in this tutorial. Verifique se você criou um clone do repositório e se alterou os diretórios para o diretório clonado.Verify that you've created a clone of the repo, and have changed directories into the cloned directory. Se você ainda não concluiu essas etapas e deseja continuar acompanhando, comece com o Tutorial 1 – Criar mensagens de contêiner.If you haven't completed these steps, and want to follow along, start with Tutorial 1 – Create container images.

Este tutorial exige a execução da CLI do Azure versão 2.0.53 ou posterior.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Execute az --version para encontrar a versão.Run az --version to find the version. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Atualizar um aplicativoUpdate an application

Vamos fazer uma alteração no aplicativo de exemplo e, em seguida, atualize a versão já implantada no cluster do AKS.Let's make a change to the sample application, then update the version already deployed to your AKS cluster. Verifique se você está no diretório azure-voting-app-redis clonado.Make sure that you're in the cloned azure-voting-app-redis directory. O código-fonte do aplicativo de exemplo pode então ser encontrado no diretório azure-vote.The sample application source code can then be found inside the azure-vote directory. Abra o arquivo config_file.cfg do arquivo com um editor, como vi:Open the config_file.cfg file with an editor, such as vi:

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

Altere os valores de VOTE1VALUE e VOTE2VALUE para valores diferentes, como cores.Change the values for VOTE1VALUE and VOTE2VALUE to different values, such as colors. O seguinte exemplo mostra os valores atualizados:The following example shows the updated values:

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

Salve e feche o arquivo.Save and close the file. Em vi, use :wq.In vi, use :wq.

Atualizar a imagem do contêinerUpdate the container image

Para recriar a imagem de front-end e testar o aplicativo atualizado, use docker-compose.To re-create the front-end image and test the updated application, use docker-compose. O argumento --build é usado para instruir o Docker Compose a recriar a imagem do aplicativo:The --build argument is used to instruct Docker Compose to re-create the application image:

docker-compose up --build -d

Testar o aplicativo localmenteTest the application locally

Para verificar que a atualização imagem de contêiner atualizada mostra as alterações, abra um navegador da Web local para http://localhost:8080.To verify that the updated container image shows your changes, open a local web browser to http://localhost:8080.

Captura de tela que mostra um exemplo da imagem de contêiner atualizada do Aplicativo de Votação do Azure aberto com um navegador da Web local e um host local.

Os valores atualizados fornecidos no arquivo config_file.cfg são exibidos no aplicativo em execução.The updated values provided in the config_file.cfg file are displayed in your running application.

Marcar e enviar imagem por pushTag and push the image

Para usar corretamente a imagem atualizada, marque a imagem azure-vote-front com o nome do servidor de logon do registro do ACR.To correctly use the updated image, tag the azure-vote-front image with the login server name of your ACR registry. Obter o nome do servidor de logon com o 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

Utilize a docker tag para marcar a imagem.Use docker tag to tag the image. Substitua <acrLoginServer> pelo nome do servidor de logon do ACR ou pelo nome de host do registro público e atualize a versão da imagem para :v2 da seguinte maneira: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

Agora use docker push para fazer upload da imagem no registro.Now use docker push to upload the image to your registry. Substitua <acrLoginServer> pelo nome do servidor de logon do ACR.Replace <acrLoginServer> with your ACR login server name.

Observação

Se você tiver problemas de push para o registro do ACR, verifique se você ainda está conectado.If you experience issues pushing to your ACR registry, make sure that you are still logged in. Execute o comando az acr login usando o nome do Registro de Contêiner do Azure criado na etapa Criar um Registro de Contêiner do Azure.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. Por exemplo, 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

Implantar o aplicativo atualizadoDeploy the updated application

Para fornecer o tempo de atividade máximo, várias instâncias do pod de aplicativos precisam estar em execução.To provide maximum uptime, multiple instances of the application pod must be running. Verifique o número de instâncias de front-end em execução com o 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

Caso não tenha vários pods de front-end, dimensione a implantação do azure-vote-front da seguinte maneira: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

Para atualizar o aplicativo, utilize o comando kubectl set.To update the application, use the kubectl set command. Atualize <acrLoginServer> com o servidor de logon ou com o nome do host do registro de contêiner e especifique a versão do aplicativo 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

Para monitorar a implantação, use o comando kubectl get pod.To monitor the deployment, use the kubectl get pod command. Conforme o aplicativo atualizado é implantado, os pods são encerrados e recriados com a nova imagem de contêiner.As the updated application is deployed, your pods are terminated and re-created with the new container image.

kubectl get pods

A saída de exemplo a seguir mostra os pods de finalização e as novas instâncias em execução conforme o andamento da implantação: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

Testar o aplicativo atualizadoTest the updated application

Para exibir o aplicativo de atualização, primeiro obtenha o endereço IP externo do serviço 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

Agora abra um navegador da Web local no endereço IP do serviço:Now open a local web browser to the IP address of your service:

Captura de tela que mostra um exemplo do Aplicativo de Votação do Azure atualizado aberto em um navegador da Web local.

Próximas etapasNext steps

Neste tutorial, você atualizou um aplicativo e distribuiu essa atualização para um cluster do AKS.In this tutorial, you updated an application and rolled out this update to your AKS cluster. Você aprendeu a:You learned how to:

  • Atualizar o código do aplicativo front-endUpdate the front-end application code
  • Criar uma imagem de contêiner atualizadaCreate an updated container image
  • Efetuar push da imagem de contêiner para o Registro de Contêiner do AzurePush the container image to Azure Container Registry
  • Implantar a imagem de contêiner atualizadaDeploy the updated container image

Avance para o próximo tutorial para saber como atualizar um cluster do AKS para uma nova versão do Kubernetes.Advance to the next tutorial to learn how to upgrade an AKS cluster to a new version of Kubernetes.