Restaure o Cardápio Aprovado

KubernetesBeginner
Pratique Agora

Introdução

O Juniper Café está atendendo às requisições, mas o cardápio mais recente cobra $35.00 por um Oat Latte. Um Pod saudável ainda pode servir dados de negócio incorretos. Você restaurará o cardápio de outono aprovado, preservando o café, suas versões anteriores e o serviço separado da sala de leitura.

Este é um ambiente novo, com seu próprio histórico de versões preparado. Ele não usa arquivos nem processos do laboratório anterior. Você deve ter concluído o laboratório do cardápio sazonal: esta lição reutiliza o formato do cardápio, os ConfigMaps gerados, o Deployment e as verificações de download, e então apresenta a seleção e a recuperação de revisões. A duração de 35 minutos é uma estimativa do autor, não um tempo medido com iniciantes.

Restaure a Revisão Aprovada

Nesta etapa, use o cardápio real e o histórico do Deployment para escolher e restaurar a versão de outono aprovada.

Abra Café Menu, selecione Explore the menu e encontre Oat Latte. O preço atual de $35.00 está errado, embora o site e suas páginas de detalhes das bebidas carreguem. Mude para Workspace, começando em /home/labex/project/cafe-menu.

Leia a tabela aprovada completa da equipe do balcão e o rótulo da estação. Como no laboratório anterior, os preços são centavos inteiros; 350 significa $3.50:

cat approved/menu.csv
id,name,price_cents,available
espresso,Espresso,250,true
oat-latte,Oat Latte,350,true
cold-brew,Cold Brew,390,false
maple-latte,Maple Latte,450,true
cat approved/season.txt
Autumn at Juniper

Um rollout bem-sucedido significa que o Kubernetes atingiu o estado de Pod solicitado. Ele não valida todos os preços do cardápio. Verifique o Deployment saudável e depois liste suas revisões. rollout history lê os ReplicaSets retidos; o texto da causa da alteração ajuda a identificar cada versão preparada:

kubectl get deployment cafe -n cafe-menu
kubectl rollout history deployment/cafe -n cafe-menu

O histórico contém as revisões everyday, autumn e misprint, nessa ordem. Os números de revisão pertencem a este Deployment neste ambiente novo; não trate um número como um nome universal de versão.

As versões salvas completas também estão disponíveis. Compare o cardápio habitual anterior com o de outono aprovado:

cat versions/everyday/menu.json
cat versions/autumn/menu.json

A versão habitual tem o preço correto de Oat Latte, mas ainda oferece Cold Brew e não oferece Maple Latte. Portanto, restaurar qualquer versão anterior seria errado. A versão de outono corresponde a todos os valores aprovados e ao rótulo da estação.

Inspecione a revisão 2, a revisão de outono preparada neste ambiente. --revision=2 solicita os detalhes de seu modelo de Pod:

kubectl rollout history deployment/cafe -n cafe-menu --revision=2

Encontre a referência ao ConfigMap gerado do volume menu. Esse modelo salvo pode iniciar novos Pods com aquela configuração anterior exata porque o ConfigMap ainda existe.

Restaure essa revisão. rollout undo altera o Deployment para o modelo de Pod anterior selecionado; --to-revision=2 seleciona explicitamente a revisão aprovada:

kubectl rollout undo deployment/cafe -n cafe-menu --to-revision=2

Espere por ambas as réplicas restauradas:

kubectl rollout status deployment/cafe -n cafe-menu --timeout=120s
deployment "cafe" successfully rolled out

Mude para Café Menu, selecione Our menu e atualize se necessário. Confirme que Oat Latte custa $3.50, Maple Latte está disponível por $4.50 e Cold Brew está indisponível. Se o tempo de espera se esgotar, use o procedimento de diagnóstico com kubectl get pods e kubectl describe deployment ensinado no laboratório anterior; não reinicialize o namespace.

O cardápio aprovado restaurado

Compare os quatro cartões, incluindo o Cold Brew indisponível.

Uma limitação importante: a reversão restaura o modelo de Pod, incluindo o nome de sua configuração. Ela não restaura conteúdos anteriores arbitrários de um ConfigMap editado diretamente. Mantenha inalterada cada configuração gerada preservada.

Alinhe a Versão Salva

Nesta etapa, faça sua versão salva reproduzir a aplicação em execução recuperada.

Retorne a Workspace. Uma reversão em execução não edita arquivos locais. O diretório release ainda contém a versão candidata incorreta; aplicá-lo agora traria de volta o preço errado. Leia esse arquivo antes de substituí-lo:

cat release/menu.json

Ele ainda contém 3500 centavos para Oat Latte. Copie o cardápio de outono aprovado e a definição do Deployment para sua versão de trabalho. Cada cp substitui apenas o arquivo de destino indicado. Mantenha inalterados os diretórios de versões originais:

cp versions/autumn/menu.json release/menu.json
cp versions/autumn/deployment.json release/deployment.json

O arquivo do Deployment também contém a anotação da causa da alteração aprovada. Seu kustomization.yaml existente mantém o mesmo gerador e namespace. Renderize a versão novamente:

kubectl kustomize release

O nome da configuração gerada deve corresponder à referência do modelo de outono restaurado. Não é necessária uma nova versão dos dados porque os bytes do cardápio são os mesmos. Aplique o código-fonte alinhado:

kubectl apply -k release
kubectl rollout status deployment/cafe -n cafe-menu --timeout=120s

O rollout termina com o cardápio aprovado ainda em uso. Agora, uma nova aplicação preserva a recuperação em vez de desfazê-la. Mantenha todo o diretório release: o Deployment, o arquivo de cardápio e a configuração do gerador trabalham juntos. Se você copiou de um caminho errado, pwd e ls versions/autumn ajudam a localizar os arquivos fornecidos; repita as duas cópias precisas em vez de editar o histórico preservado.

Entregue o Cardápio Recuperado

Nesta etapa, conclua com um download real do cardápio e confirme que o café não afetado continua funcionando.

Mude para Café Menu. Em Our menu, abra o link About this drink de Oat Latte, confirme o preço corrigido de $3.50 nos detalhes e volte usando Back to the menu. Abra Visit us e confirme a localização e os horários. Use Download menu para baixar o cardápio completo real.

Mude para Reference Menu e selecione Our menu. O Willow Reading Room deve continuar mostrando sua seleção habitual; corrigir o Juniper não deve alterar esse serviço separado.

Retorne a Workspace. Salve o download real usando as mesmas opções de curl ensinadas no primeiro laboratório:

curl --fail --silent --show-error http://127.0.0.1:8081/menu.csv -o menu-handover.csv

Compare-o com a tabela aprovada:

diff -u approved/menu.csv menu-handover.csv

Nenhuma saída significa que o download completo corresponde à aprovação. Se surgirem diferenças, use as linhas reais para distinguir uma versão restaurada incorreta de um código-fonte salvo desatualizado. Corrija a versão, espere pelo rollout e baixe novamente; não edite manualmente o CSV recebido.

Liste as configurações para confirmar que as versões anteriores continuam disponíveis:

kubectl get configmaps -n cafe-menu

A recuperação está concluída quando o café em execução, o código-fonte reutilizável e o download real para a equipe coincidem. As versões anteriores do código-fonte e os objetos de configuração gerados permanecem intactos.

Resumo

Você distinguiu uma aplicação saudável de um cardápio correto, escolheu uma revisão usando evidências de negócio completas e restaurou sua referência de configuração preservada. Também alinhou a versão local para que uma aplicação posterior mantenha a recuperação e, depois, verificou páginas reais e o download real do cardápio sem alterar o serviço de referência.

O desafio independente muda o café, as relações entre os itens do cardápio e a versão aprovada. Ele usa os mesmos métodos de configuração, rollout e entrega.