Partilhar via


(PRECADO) Atualizar uma aplicação em Kubernetes

Dica

Para a versão atualizada este tutorial que utiliza Azure Kubernetes Service, consulte Tutorial: Atualize uma aplicação em Azure Kubernetes Service (AKS).

Aviso

O Serviço de Contentores Azure (ACS) está a ser depreciado. Não estão a ser adicionadas novas funcionalidades ou funcionalidades ao ACS. Todas as APIs, experiência do portal, comandos CLI e documentação são marcados como precedidos.

Em 2017, introduzimos Azure Kubernetes Service (AKS) para simplificar a gestão, implantação e operações da Kubernetes. Se utilizar o orquestrador Kubernetes, por favor, emigre para a AKS até 31 de janeiro de 2020. Para começar, consulte migrar para Azure Kubernetes Service.

Para mais informações, consulte o anúncio de depreciação do Serviço de Contentores Azure no Azure.com.

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. Ao fazê-lo, a atualização é testada, para que apenas uma parte da implementação seja atualizada em simultâneo. 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. As tarefas que concluir incluem:

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

Nos tutoriais subsequentes, o Log Analytics está configurado para monitorizar o cluster de Kubernetes.

Antes de começar

Nos tutoriais anteriores, foi compactada uma aplicação numa imagem de contentor, carregada a imagem para o Azure Container Registry e criado um cluster de Kubernetes. A aplicação foi, em seguida, executada no cluster de Kubernetes.

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. Certifique-se de que criou um clone do repositório e que foram alterados diretórios no diretório clonado. No interior está um diretório denominado azure-vote e um ficheiro denominado docker-compose.yml.

Se ainda não concluiu estes passos e pretende acompanhar, regresse ao Tutorial 1 – Criar imagens de contentor.

Atualizar a aplicação

Para este tutorial, é realizada uma alteração na aplicação e a aplicação atualizada implementada no cluster Kubernetes.

O código de origem da aplicação pode ser encontrado no interior do diretório azure-vote. Abra o ficheiro config_file.cfg com qualquer editor de texto ou de código. Neste exemplo é utilizado vi.

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

Altere os valores de VOTE1VALUE e VOTE2VALUE, e guarde o ficheiro.

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

Guarde e feche o ficheiro.

Atualizar imagem de contentor

Utilize docker-compose para voltar a criar a imagem de front-end e execute a aplicação atualizada. 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

Procure o https://localhost:8080 para ver a aplicação atualizada.

Image of Kubernetes cluster on Azure

Imagens de etiqueta e push

Assinale a imagem azure-vote-front com o loginServer do registo de contentor.

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 Azure Container Registry ou o nome do anfitrião público do registo. Também tenha em atenção que a versão da imagem é atualizada para redis-v2.

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:redis-v2

Utilize o push do docker para carregar a imagem para o seu registo. Substitua <acrLoginServer> pelo nome do servidor de início de sessão do Azure Container Registry.

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

Implementar atualização da aplicação

Para garantir o máximo tempo de atividade, tem de executar várias instâncias do pod da aplicação. Verifique esta configuração com o comando kubectl get pod.

kubectl get pod

Resultado:

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 em execução na imagem azure-vote-front, dimensione a implementação azure-vote-front.

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 o servidor de início de sessão do seu registo de contentor.

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:redis-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 pod

Resultado:

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

Obtenha o endereço IP externo do serviço azure-vote-front.

kubectl get service azure-vote-front

Procure o endereço IP para ver a aplicação atualizada.

Image of Kubernetes cluster on Azure

Passos seguintes

Neste tutorial, atualiza uma aplicação e implementa esta atualização num cluster de Kubernetes. Foram realizadas as seguintes tarefas:

  • Atualizou o código da aplicação de front-end
  • Criou uma imagem de contentor atualizada
  • Enviou a imagem de contentor para o Azure Container Registry
  • Implementou a aplicação atualizada

Avance para o próximo tutorial para saber mais sobre como monitorizar o Kubernetes com o Log Analytics.