Tutorial: atualizar um aplicativo no Serviço de Kubernetes do Azure (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. Uma atualização é preparada para que apenas uma parte da implantação seja atualizada ao mesmo tempo. Essa atualização em etapas permite que o aplicativo continue em execução durante a atualização. Ela também oferece um mecanismo de reversão, caso ocorra uma falha de implantação.

Neste tutorial, parte seis de sete, o aplicativo de exemplo Azure Vote é atualizado. Você aprenderá como:

  • Atualizar o código do aplicativo front-end
  • Criar uma imagem de contêiner atualizada
  • Efetuar push da imagem de contêiner para o Registro de Contêiner do Azure
  • Implantar a imagem de contêiner atualizada

Antes de começar

Nos tutoriais anteriores, um aplicativo foi empacotado em uma imagem de contêiner. Essa imagem foi carregada no Registro de Contêiner do Azure e você criou um cluster do AKS. O aplicativo foi então implantado no cluster do AKS.

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. Verifique se você criou um clone do repositório e se alterou os diretórios para o diretório clonado. Se você ainda não concluiu essas etapas e deseja continuar acompanhando, comece com o Tutorial 1 – Criar mensagens de contêiner.

Este tutorial exige a execução da CLI do Azure versão 2.0.53 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Atualizar um aplicativo

Vamos fazer uma alteração no aplicativo de exemplo e, em seguida, atualize a versão já implantada no cluster do AKS. Verifique se você está no diretório azure-voting-app-redis clonado. O código-fonte do aplicativo de exemplo pode então ser encontrado no diretório azure-vote. Abra o arquivo config_file.cfg do arquivo com um editor, como vi:

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

Altere os valores de VOTE1VALUE e VOTE2VALUE para valores diferentes, como cores. O seguinte exemplo mostra os valores atualizados:

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

Salve e feche o arquivo. Em vi, use :wq.

Atualizar a imagem do contêiner

Para recriar a imagem de front-end e testar o aplicativo atualizado, use docker-compose. O argumento --build é usado para instruir o Docker Compose a recriar a imagem do aplicativo:

docker-compose up --build -d

Testar o aplicativo localmente

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.

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

Os valores atualizados fornecidos no arquivo config_file.cfg são exibidos no aplicativo em execução.

Marcar e enviar imagem por push

Para usar corretamente a imagem atualizada, marque a imagem azure-vote-front com o nome do servidor de logon do registro do ACR. Obter o nome do servidor de logon com o comando az acr list:

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

Utilize a docker tag para marcar a imagem. 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:

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. Substitua <acrLoginServer> pelo nome do servidor de logon do ACR.

Observação

Se você tiver problemas de push para o registro do ACR, verifique se você ainda está conectado. 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. Por exemplo, az acr login --name <azure container registry name>.

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

Implantar o aplicativo atualizado

Para fornecer o tempo de atividade máximo, várias instâncias do pod de aplicativos precisam estar em execução. Verifique o número de instâncias de front-end em execução com o 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

Caso não tenha vários pods de front-end, dimensione a implantação do azure-vote-front da seguinte maneira:

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

Para atualizar o aplicativo, utilize o comando kubectl set. 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:

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. Conforme o aplicativo atualizado é implantado, os pods são encerrados e recriados com a nova imagem de contêiner.

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:

$ 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 atualizado

Para exibir o aplicativo de atualização, primeiro obtenha o endereço IP externo do serviço azure-vote-front:

kubectl get service azure-vote-front

Agora abra um navegador da Web no endereço IP do serviço:

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

Próximas etapas

Neste tutorial, você atualizou um aplicativo e distribuiu essa atualização para um cluster do AKS. Você aprendeu a:

  • Atualizar o código do aplicativo front-end
  • Criar uma imagem de contêiner atualizada
  • Efetuar push da imagem de contêiner para o Registro de Contêiner do Azure
  • Implantar a imagem de contêiner atualizada

Avance para o próximo tutorial para saber como atualizar um cluster do AKS para uma nova versão do Kubernetes.