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.

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.



