Pular para o conteúdo principal

🔁 Rollout

O rollout é a atualização gradual de uma aplicação: os pods antigos são trocados pelos novos aos poucos, sem derrubar o serviço. Se a versão nova não ficar pronta, o Kubernetes mantém os pods antigos atendendo.

informação

Rollouts são feitos com o kubectl. O Painel Nuvion não tem esse recurso.


🚀 Antes de começar​

  • Ter o acesso ao cluster configurado (veja Acesso ao Cluster).
  • Ter o Deployment web-deploy da página Deploy (imagem nginx:1.26).

🚀 1. Atualizar a versão da imagem​

kubectl set image deployment/web-deploy nginx=nginx:1.27

O formato é NOME-DO-CONTAINER=NOVA-IMAGEM. No modelo da página Deploy, o container se chama nginx.

🚀 2. Acompanhar a atualização​

kubectl rollout status deployment/web-deploy
kubectl get pods -l app=web-deploy

Você verá pods novos subindo enquanto os antigos saem. O final é successfully rolled out.

🚀 3. Registrar o motivo da mudança​

kubectl annotate deployment/web-deploy kubernetes.io/change-cause="Atualiza nginx para 1.27" --overwrite

O texto aparece no histórico do passo 4.

🚀 4. Ver o histórico​

kubectl rollout history deployment/web-deploy

Cada versão do Deployment é uma revisão numerada.

🚀 5. Controlar o ritmo da atualização​

Por padrão, o Kubernetes atualiza em etapas. Você pode ajustar no Deployment:

spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
CampoSignificado
maxUnavailable: 0Nunca ficar com menos pods do que o desejado
maxSurge: 1Pode criar 1 pod a mais durante a troca

🚀 6. Pausar e retomar (opcional)​

kubectl rollout pause deployment/web-deploy
kubectl rollout resume deployment/web-deploy

✅ Como saber se deu certo​

kubectl get deployment web-deploy -o jsonpath='{.spec.template.spec.containers[0].image}'

O comando mostra nginx:1.27.

❗ Problemas comuns​

SintomaCausaSolução
rollout status fica esperandoOs pods novos não ficam prontosVeja kubectl get pods: se aparecer ImagePullBackOff, a imagem não existe. Desfaça com Rollback
unable to find container namedNome do container erradoVeja o nome com kubectl describe deployment web-deploy
timed out waiting for the conditionA atualização passou do prazoConfira os Events e faça o Rollback

➡️ Próximo passo: Rollback

🧠 Dúvidas?​

Fale com nosso time de suporte técnico da SaveinCloud!