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