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
.
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:
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.
Azure Kubernetes Service