Fase 0: Preparar o ambiente

Antes de tudo, confirmar em qual cluster estamos apontando. Numa rotina de várias demos, apontar para o cluster errado é o erro mais comum - sempre valide.

Selecionar a conta/região da demo. Este é o passo mais importante: a demo inteira roda na conta e região específicas, e o profile default costuma apontar para outra conta - o que causa "template not found" no FIS e "not found" no kubectl. Aponte o profile com acesso ao cluster e ao FIS:

export AWS_PROFILE=devops-saopaulo
aws sts get-caller-identity --query Account --output text   # confirme a conta da demo

Listar os contextos do kubeconfig:

kubectl config get-contexts

Garantir/renovar o contexto do cluster da demo (define o contexto ativo):

aws eks update-kubeconfig --name llm-vmware-hybrid --region sa-east-1

Confirmar o contexto atual antes de seguir:

kubectl config current-context

Exportar o ID do template do FIS para a sessão (auto-resolve - sobrevive a mudança de ID). A Fase 3 usa esta variável:

export FIS_TEMPLATE_ID=$(aws fis list-experiment-templates --region sa-east-1 \
  --query "experimentTemplates[?contains(description,'on-premises')].id | [0]" --output text)
echo "FIS_TEMPLATE_ID=$FIS_TEMPLATE_ID"
RecursoEndereçoUso
App via ALB (região AWS)kubectl get ingress demo-ingress -n demo-resilience -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'Ingress region-originated - cai no disconnect
App via VIP on-prem (MetalLB)http://192.168.3.240/ Entrada local - sobrevive ao disconnect
Grafana on-premhttp://192.168.3.242/ Dashboard de saúde dos nodes + conectividade com a nuvem (anônimo)
SSH Node 1 / Node 2ssh -i ~/.ssh/id_ecdsa lopbruno@192.168.3.51 / ...52Comandos no node (crictl, iptables)
Cluster EKSaws eks update-kubeconfig --name llm-vmware-hybrid --region sa-east-1kubectl
Ferramentas recomendadas: kubectl, jq, k9s (painel visual) e kube-ps1 no prompt (mostra o contexto atual, evita rodar no cluster errado). Layout: HTML do runbook na esquerda, iTerm2 na direita; na Fase 3, divida o terminal em 3 panes para os 3 clients lado a lado.
Pré-requisito nos nodes: crictl instalado nos DOIS hybrid nodes (v1.31.1 em /usr/local/bin, config em /etc/crictl.yaml) - usado nas Fases 2b e 3-cache. O nodeadm NÃO o instala (ele é tooling de debug, não faz parte do bootstrap). Instalação: ver o passo único na Fase 3-cache.
Nota sobre sudo no node

Os hybrid nodes já estão com NOPASSWD configurado para crictl e iptables (/etc/sudoers.d/demo), então os comandos com sudo nas Fases 2b, 3b e 3-cache rodam sem pedir senha - fluxo limpo na frente do cliente. Se precisar reaplicar num node novo: echo "lopbruno ALL=(ALL) NOPASSWD: /usr/local/bin/crictl, /usr/sbin/iptables" | sudo tee /etc/sudoers.d/demo