Rollback
Este guia descreve os procedimentos para reverter atualizações dos componentes do TDP Kubernetes, tanto via Helm quanto via ArgoCD. O rollback permite restaurar rapidamente uma versão anterior em caso de falhas ou comportamentos inesperados após uma atualização.
Antes de realizar qualquer rollback, faça backup dos dados persistentes. Dependendo do componente, um rollback pode causar perda de dados se as migrações de schema forem incompatíveis com versões anteriores.
Backup de Dados antes do Rollback
Antes de iniciar o rollback, proteja os dados persistentes criando snapshots dos PVCs.
Identificar os PVCs do Componente
kubectl get pvc -n <namespace> -l app.kubernetes.io/instance=<release>
Criar Snapshots dos Volumes
kubectl apply -f - <<EOF
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: <release>-pre-rollback-snapshot
namespace: <namespace>
spec:
volumeSnapshotClassName: <snapshot-class>
source:
persistentVolumeClaimName: <pvc-name>
EOF
Verificar o Status do Snapshot
kubectl get volumesnapshot -n <namespace>
Certifique-se de que o snapshot está com status readyToUse: true antes de prosseguir.
Rollback via Helm
Consultar o Histórico de Revisões
Utilize o comando helm history para visualizar todas as revisões de um release:
helm history <release> -n <namespace>
A saída exibirá uma tabela com as colunas: REVISION, UPDATED, STATUS, CHART, APP VERSION e DESCRIPTION. Identifique a revisão para a qual deseja reverter.
Exemplo de saída:
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 2025-01-15 10:30:00 deployed tdp-kafka-1.0.0 3.5.1 Install complete
2 2025-02-10 14:00:00 superseded tdp-kafka-1.0.0 3.5.1 Upgrade complete
3 2025-03-01 09:15:00 deployed tdp-kafka-2.0.0 3.6.0 Upgrade complete
Rollback para uma Revisão Específica
Para reverter para uma revisão específica:
helm rollback <release> <revisao> -n <namespace>
Por exemplo, para reverter o tdp-kafka para a revisão 2:
helm rollback tdp-kafka 2 -n <namespace>
Rollback para a Revisão Anterior
Para reverter para a revisão imediatamente anterior (sem especificar o número):
helm rollback <release> -n <namespace>
Rollback com Recriação de Pods
Em alguns casos, pode ser necessário forçar a recriação de todos os pods durante o rollback:
helm rollback <release> <revisao> -n <namespace> --recreate-pods
Verificar o Resultado do Rollback
Após o rollback, confirme que o release foi revertido com sucesso:
helm status <release> -n <namespace>
helm history <release> -n <namespace>
A última entrada no histórico deve indicar STATUS: deployed com a descrição Rollback to <revisao>.
Rollback via ArgoCD
O rollback via ArgoCD consiste em reverter o estado do repositório Git para a versão anterior dos manifestos.
Reverter o Manifesto no Git
A abordagem recomendada é reverter o commit que introduziu a atualização:
git log --oneline -10 # Identifique o commit da atualização
git revert <commit-hash>
git push origin main
O ArgoCD detectará a alteração no repositório e sincronizará o cluster automaticamente (se a sincronização automática estiver habilitada).
Forçar Sincronização após Reversão
Se a sincronização automática estiver desabilitada, force a sincronização manualmente:
argocd app sync tdp-kafka
Rollback pelo ArgoCD CLI
O ArgoCD também permite reverter a última operação de sincronização:
argocd app rollback tdp-kafka
O rollback pelo ArgoCD CLI reverte apenas o estado do cluster. O repositório Git não é alterado, o que pode causar um novo sync automático restaurando a versão indesejada. Sempre reverta também no Git para garantir consistência.
Verificar o Estado após Rollback
argocd app get tdp-kafka
O status deve indicar Synced e Healthy após a conclusão do rollback.