Como Manter a Calma Quando Seu Cluster Kubernetes Cai, ou Por Que Você Precisa do Velero
Imagine o seguinte: é sexta-feira à noite, você está planejando relaxar, quando de repente uma notificação do Slack aparece — um dos seus clusters Kubernetes de produção deu pau. Uma configuração errada, uma queda do provedor de nuvem, ou simplesmente um erro humano — a causa já não importa. O que importa é quão rápido você consegue colocar tudo de volta para funcionar. Se você só tem arquivos YAML no Git, boa sorte para recuperar aplicações stateful e seus dados.
É aí que entra o Velero. É um projeto da VMware (originalmente criado pela Heptio) que se tornou o padrão de facto para backup no mundo K8s.
O Que É e Por Que o GitOps Sozinho Não É Suficiente
Muitos desenvolvedores acreditam que se toda a sua infraestrutura está definida em código (IaC) e implantada através do ArgoCD ou Flux, backups são desnecessários. Esta é uma concepção perigosa. O Git armazena manifests, mas não sabe nada sobre o estado dos seus Persistent Volumes (PV), certificados emitidos dinamicamente, ou secrets que nunca entraram no repositório.
Velero faz duas coisas: ele salva objetos da API do Kubernetes (deployments, configmaps, secrets) e faz snapshots de disco com dados. Ele funciona em nuvens públicas (AWS, GCP, Azure) assim como em data centers on-premises em bare metal.
Três Cenários Onde o Velero Salva a Vida
Vejo frequentemente o Velero sendo usado não apenas para proteção contra desastres. Aqui estão os principais casos de uso:
- Recuperação de Desastres Clássica. Este é direto: o cluster morreu, você sobe um novo, e restaura tudo do armazenamento S3 com um único comando.
- Migração Entre Nuvens. Migrar da AWS para o Google Cloud ou de uma região para outra se torna uma tarefa trivial. O Velero empacota os recursos e os implanta no novo local.
- Clonagem de Ambientes. Precisa criar rapidamente uma cópia exata da produção para testes? Você faz um backup de prod, restaura no namespace
staging. Os dados do banco serão atuais, não de um dump de um mês atrás.
Como Funciona Por Dentro
A arquitetura do projeto é bastante transparente. Existe um componente servidor que roda dentro do cluster como um operator, e um cliente CLI para gerenciar o processo.
Quando você dispara um backup, é isso que acontece:
- O cliente envia uma requisição para a API do Velero.
- O controller de Backup encontra todos os objetos que você especificou (você pode filtrar por labels ou namespaces).
- Velero faz requisições para a API do Kubernetes para coletar descrições JSON dos recursos.
- Em paralelo, plugins para gerenciamento de disco são invocados (ex., EBS na AWS ou drivers CSI) para criar snapshots dos dados.
- Tudo isso é arquivado e enviado para armazenamento de objetos (compatível com S3).
A propósito, o Velero suporta Restic e Kopia. Isso significa que você pode fazer backups incrementais do sistema de arquivos mesmo onde snapshots na nuvem não estão disponíveis.
Exemplo Prático
Digamos que precisamos fazer backup de uma aplicação inteira no namespace app-production. O comando no terminal ficaria assim:
velero backup create production-backup --include-namespaces app-production
E se alguém acidentalmente excluir esse namespace uma semana depois, a recuperação leva apenas alguns minutos:
velero restore create --from-backup production-backup
Curiosamente, o Velero pode modificar parâmetros de recursos em tempo real durante a restauração. Por exemplo, você pode mudar a StorageClass dos discos se a classe antiga não estiver disponível no novo cluster.
Nuances de Compatibilidade
Os desenvolvedores do Velero mantêm uma matriz de compatibilidade bastante rigorosa. Atualmente, a versão 1.18 é testada contra as últimas versões do Kubernetes (até a 1.35). Isso é importante porque a API do Kubernetes muda rapidamente, e ferramentas mais antigas frequentemente quebram quando o cluster é atualizado.
O projeto está sob o guarda-chuva da Cloud Native Computing Foundation (CNCF), que fornece certas garantias: ele não vai desaparecer amanhã, e sua segurança está sendo monitorada.
Vale a Pena Implementar
Se você está rodando Kubernetes em produção e tem qualquer dado em discos (bancos de dados, filas, config stores), o Velero é indispensável.
Quem definitivamente se beneficiaria dele:
- Engenheiros de SRE que precisam dormir tranquilamente à noite.
- Equipes que migram frequentemente entre clusters.
- Desenvolvedores que precisam de dados frescos de produção para depurar bugs complexos.
Comece com a documentação oficial em velero.io. É bem detalhada, embora possa parecer avassaladora às vezes. A principal coisa a lembrar é que um backup só existe quando você restaurou com sucesso dele pelo menos uma vez. Tente fazer isso em um cluster de teste antes de confiar na ferramenta com dados reais.
Projetos relacionados