Tutorial: Atualizar um aplicativo no Serviço de Kubernetes do Azure no Azure Stack HCI e no servidor Windows

Depois de implantar um aplicativo no Kubernetes em Serviço de Kubernetes do Azure (AKS) no Azure Stack HCI e no servidor Windows, você pode atualizá-lo especificando uma nova imagem de contêiner ou versão de imagem. Você deve preparar uma atualização 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.

Este tutorial, parte seis de sete, descreve como atualizar o aplicativo de exemplo do Azure Vote. Você saberá 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

Em tutoriais anteriores, você aprendeu a:

  • Empacotar um aplicativo em uma imagem de contêiner e carregar a imagem para Registro de Contêiner do Azure.
  • Crie um AKS no cluster do Azure Stack HCI e implante o aplicativo no cluster.
  • Clone um repositório de aplicativos que inclui o código-fonte do aplicativo e um arquivo de Docker Compose pré-criado que você pode usar 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, comece com o Tutorial 1 – Criar imagens de contêiner.

Este tutorial exige que você execute a 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

Esta seção descreve como fazer uma alteração no aplicativo de exemplo e, em seguida, atualizar a versão já implantada no AKS no Azure Stack HCI e no cluster Windows Server. 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 notepad:

notepad 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.

Atualizar a imagem do contêiner

Para recriar a imagem de front-end e testar o aplicativo atualizado, use docker-compose. O --build argumento é usado para S para 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 máximo de atividade, você deve executar várias instâncias do pod do aplicativo. 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

Em seguida, abra um navegador da Web para o 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.