Desinstalação
Este guia descreve como remover componentes do TDP Kubernetes de forma organizada e segura.
Antes de começar
Distinguir o que está sendo removido:
- componentes instalados diretamente via Helm
- Applications gerenciadas pelo ArgoCD
- o próprio ArgoCD, quando ele também fizer parte da remoção
Este documento separa claramente cada cenário.
A remoção dos recursos Kubernetes não implica, automaticamente, a remoção dos dados persistidos. PVCs, PVs, snapshots e namespace devem ser avaliados separadamente.
Antes de executar qualquer remoção, identifique como o componente ou ambiente foi implantado.
1. Verificar se o componente foi instalado via Helm
Use este comando para descobrir releases Helm existentes no namespace:
helm list -n <namespace>

Se o componente aparecer nessa listagem, a remoção principal é feita com helm uninstall.
2. Verificar se o componente é gerenciado pelo ArgoCD
Use este comando para descobrir Applications gerenciadas pelo ArgoCD:
argocd app list

Se o componente aparecer como Application do ArgoCD, a remoção principal é feita com argocd app delete.
Não misture os fluxos sem necessidade. Se o componente é gerenciado pelo ArgoCD, o caminho principal é remover a Application. Se ele foi instalado diretamente via Helm, o caminho principal é remover a release Helm.
Preparações antes da remoção
Fazer backup dos dados
Antes de remover qualquer componente com estado, faça backup do que precisar ser preservado.
Exemplos comuns:
- PostgreSQL: dump do banco
- ClickHouse: exportação de tabelas e schemas
- Airflow: DAGs, variáveis e conexões
- OpenMetadata: metadados e lineage
- Ranger: políticas e configurações relevantes
Exportar a configuração da release Helm
Quando o componente tiver sido instalado via Helm, exporte os valores atualmente aplicados:
helm get values <release> -n <namespace> -o yaml > <release>-values-backup.yaml

Esse arquivo normalmente contém os valores sobrescritos durante a instalação ou atualização.
Para consultar todos os parâmetros aceitos pelo chart, use helm show values no chart correspondente.
Para exportar os valores de todas as releases do namespace de uma só vez:
for release in $(helm list -n <namespace> -q); do
helm get values "$release" -n <namespace> -o yaml > "${release}-values-backup.yaml"
echo "Backup de $release concluído"
done
Identificar PVCs associados
Antes de remover o componente, verifique se existem volumes persistentes associados a ele:
kubectl get pvc -n <namespace>

Para restringir a consulta a uma release Helm específica:
kubectl get pvc -n <namespace> -l app.kubernetes.io/instance=<release>
Criar snapshot de volumes persistentes, quando suportado
Se o cluster suportar CSI snapshots e houver VolumeSnapshotClass disponível, crie snapshots dos PVCs críticos antes da remoção.
Verifique se o cluster suporta snapshots:
kubectl get volumesnapshotclass
Crie o snapshot:
kubectl apply -f - <<EOT
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: <pvc-name>-final-snapshot
namespace: <namespace>
spec:
volumeSnapshotClassName: <snapshot-class>
source:
persistentVolumeClaimName: <pvc-name>
EOT
Verifique o resultado:
kubectl get volumesnapshot -n <namespace>
Remover componentes
- Via Helm
- Via ArgoCD
- Comandos
- Vídeos
Desinstalar um componente individual
Use este fluxo quando o componente tiver sido instalado diretamente como release Helm.
Desinstalar a release
helm uninstall <release> -n <namespace>

Verificar se os recursos da release foram removidos
kubectl get all -n <namespace> -l app.kubernetes.io/instance=<release>

Esse comando mostra o que ainda está associado à release após o helm uninstall.
Se o resultado vier vazio, os recursos foram removidos com sucesso.
Verificar PVCs remanescentes
kubectl get pvc -n <namespace> -l app.kubernetes.io/instance=<release>

O helm uninstall remove a release e seus recursos Kubernetes associados — Deployments, StatefulSets, Services, ConfigMaps e Secrets.
Os PVCs normalmente não são removidos automaticamente.
Remover o ambiente completo via Helm
Use este fluxo quando o ambiente inteiro tiver sido implantado diretamente via Helm, sem Applications gerenciadas pelo ArgoCD.
Remover as releases em ordem reversa de dependência
helm uninstall tdp-superset -n <namespace>
helm uninstall tdp-openmetadata -n <namespace>
helm uninstall tdp-cloudbeaver -n <namespace>
helm uninstall tdp-jupyter -n <namespace>
helm uninstall tdp-airflow -n <namespace>
helm uninstall tdp-clickhouse -n <namespace>
helm uninstall tdp-trino -n <namespace>
helm uninstall tdp-spark -n <namespace>
helm uninstall tdp-nifi -n <namespace>
helm uninstall tdp-ranger -n <namespace>
helm uninstall tdp-iceberg -n <namespace>
helm uninstall tdp-deltalake -n <namespace>
helm uninstall tdp-hive-metastore -n <namespace>
helm uninstall tdp-kafka -n <namespace>
helm uninstall tdp-postgresql -n <namespace>
helm uninstall tdp-argo -n <namespace>
helm uninstall tdp-argo-crds -n <namespace>
Verificar PVCs restantes
kubectl get pvc -n <namespace>
Remover PVCs, se a remoção for definitiva
kubectl delete pvc --all -n <namespace>

Excluir PVCs remove permanentemente os dados persistidos. Faça isso apenas quando a desmontagem for definitiva e os backups já estiverem concluídos.
- helm list
- helm get values
- helm uninstall
- kubectl get pvc
- kubectl get pvc (por release)
- kubectl get all
- kubectl delete pvc
- kubectl delete pvc --all
- kubectl get pv
- Demonstração completa
