Tutorial: Atualizar uma aplicação no Serviço Kubernetes do Azure (AKS)

Depois de a aplicação ser implementada no Kubernetes, pode ser atualizada, ao especificar uma nova imagem de contentor ou uma versão de imagem. Uma atualização é faseada para que apenas uma parte da implementação seja atualizada ao mesmo tempo. Esta atualização testada permite que a aplicação continue a ser executada durante a atualização. Também apresenta um mecanismo de reversão se ocorrer uma falha de implementação.

Neste tutorial, parte seis de sete, a aplicação Azure Vote de exemplo é atualizada. Saiba como:

  • Atualizar o código da aplicação de front-end
  • Criar uma imagem de contentor atualizada
  • Colocar a imagem de contentor no Azure Container Registry
  • Implementar a imagem de contentor atualizada

Antes de começar

Nos tutoriais anteriores, uma aplicação foi empacotada numa imagem de contentor. Esta imagem foi carregada para Azure Container Registry e criou um cluster do AKS. Em seguida, a aplicação foi implementada no cluster do AKS.

Também foi clonado um repositório de aplicações que inclui o código de origem da aplicação e foi utilizado um ficheiro do Docker Compose pré-criado neste tutorial. Verifique se criou um clone do repositório e alterou os diretórios para o diretório clonado. Se ainda não tiver concluído estes passos e quiser acompanhar, comece com o Tutorial 1 – Criar imagens de contentor.

Este tutorial requer a execução da versão 2.0.53 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Atualizar uma aplicação

Vamos fazer uma alteração à aplicação de exemplo e, em seguida, atualizar a versão já implementada no cluster do AKS. Certifique-se de que está no diretório azure-voting-app-redis clonado. O código fonte da aplicação de exemplo pode ser encontrado no diretório azure-vote . Abra o ficheiro config_file.cfg com um editor, como o vi:

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

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

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

Guarde e feche o ficheiro. Em vi, utilize :wq.

Atualizar a imagem de contentor

Para voltar a criar a imagem de front-end e testar a aplicação atualizada, utilize docker-compose. O argumento --build serve para instruir o Docker Compose para voltar a criar a imagem de aplicação:

docker-compose up --build -d

Testar a aplicação localmente

Para verificar se a imagem de contentor atualizada mostra as alterações, abra um browser local em http://localhost:8080.

Captura de ecrã a mostrar um exemplo da imagem de contentor atualizada da Aplicação de Voto do Azure em execução localmente aberta num browser local

Os valores atualizados fornecidos no ficheiro config_file.cfg são apresentados na sua aplicação em execução.

Etiquetar e enviar a imagem

Para utilizar corretamente a imagem atualizada, etiquete a imagem azure-vote-front com o nome do servidor de início de sessão do registo do ACR. Obtenha o nome do servidor de início de sessão com o comando az acr list :

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

Utilize a etiqueta do docker para etiquetar a imagem. Substitua <acrLoginServer> pelo nome do servidor de início de sessão do ACR ou pelo nome de anfitrião do registo público e atualize a versão da imagem para :v2 da seguinte forma:

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

Agora, utilize docker push para carregar a imagem para o registo. Substitua <acrLoginServer> pelo nome do servidor de início de sessão do ACR.

Nota

Se tiver problemas ao enviar para o registo do ACR, certifique-se de que ainda tem sessão iniciada. Execute o comando az acr login com o nome da sua Azure Container Registry que criou no passo Criar uma Azure Container Registry. Por exemplo, az acr login --name <azure container registry name>.

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

Implementar a aplicação atualizada

Para fornecer o máximo de tempo de atividade, várias instâncias do pod da aplicação têm de estar em execução. Verifique se 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

Se não tiver vários pods de front-end, dimensione a implementação azure-vote-front da seguinte forma:

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

Para atualizar a aplicação, utilize o comando kubectl set. Atualize <acrLoginServer> com o nome do anfitrião ou do servidor de início de sessão do registo de contentor e especifique a versão da aplicação v2:

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

Para monitorizar a implementação, utilize o comando kubectl get pod. Uma vez que a aplicação atualizada é implementada, os seus pods são terminados e recriados com a nova imagem de contentor.

kubectl get pods

O resultado de exemplo seguinte mostra os pods a serem terminados e as novas instâncias em execução à medida que a implementação avança:

$ 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 a aplicação atualizada

Para ver a aplicação atualizada, obtenha primeiro o endereço IP externo do serviço azure-vote-front:

kubectl get service azure-vote-front

Agora, abra um browser para o endereço IP do seu serviço:

Captura de ecrã a mostrar um exemplo da imagem atualizada da Aplicação de Voto do Azure em execução num cluster do AKS aberto num browser local.

Passos seguintes

Neste tutorial, atualizou uma aplicação e implementou esta atualização no cluster do AKS. Aprendeu a:

  • Atualizar o código da aplicação de front-end
  • Criar uma imagem de contentor atualizada
  • Colocar a imagem de contentor no Azure Container Registry
  • Implementar a imagem de contentor atualizada

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