Post

Designing zero-downtime deploys with blue/green in Kubernetes

Designing zero-downtime deploys with blue/green in Kubernetes

Designing zero-downtime deploys with blue/green in Kubernetes

Blue/green deploys evitam interrupção enquanto você troca versões de apps. Em clusters pequenos, a estratégia funciona bem sem precisar de service mesh.

Este guia mostra como estruturar dois Deployments (blue e green) apontando para o mesmo Service, alternando via selector.

When to use

  • Precisa trocar versões sem derrubar sessões ativas.
  • Quer rollback rápido trocando apenas labels.
  • Cluster não usa Istio/Linkerd e você quer algo leve.

Steps

1) Criar dois Deployments idênticos, exceto pelo label
Use app: myapp e color: blue ou color: green.

2) Apontar o Service para uma cor por vez
No Service, defina selector: { app: myapp, color: blue }. O tráfego vai só para o azul.

3) Publicar a nova versão na cor ociosa
Atualize o Deployment green com a nova imagem. Espere Ready e checagens de saúde.

4) Alternar o Service para a nova cor
Mude o selector para color: green. O switch é instantâneo e sem recriar pods.

5) Manter a versão anterior viva por minutos
Deixe o blue rodando para rollback rápido se surgir erro.

Tip: health checks e readiness

  • Configure readinessProbe para recusar tráfego até a app estar pronta.
  • Se usar migrations, rode fora do fluxo de deploy ou antes de apontar o Service para evitar falhas.

Clean up

  • Depois de validar, atualize a cor antiga com a nova versão para manter paridade.
  • Documente quem muda o selector e em que momento para evitar troca acidental.
Esta postagem está licenciada sob CC BY 4.0 pelo autor.