Desinstalação
Este guia descreve como remover componentes do TDP Kubernetes de forma organizada e segura.
Antes de começar
Distinguir o que está a ser removido:
- componentes instalados diretamente via Helm
- Applications geridas 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 implementado.
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 é gerido pelo ArgoCD
Use este comando para descobrir Applications geridas 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 é gerido 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 implementado diretamente via Helm, sem Applications geridas 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
- Comandos
- Vídeos
Remover um componente individual via ArgoCD
Use este fluxo quando o componente for gerido como Application do ArgoCD.
Remover a Application
argocd app delete <application-name> --cascade

Verificar a remoção
argocd app list

Verificar recursos restantes no namespace
kubectl get all -n <namespace>

Verificar PVCs restantes
kubectl get pvc -n <namespace>

A opção --cascade remove a Application e os recursos Kubernetes geridos por ela.
Mesmo assim, PVCs, PVs e outros resíduos de infraestrutura podem exigir verificação e limpeza adicional.
Remover o ambiente completo via ArgoCD
Use este caminho quando o ambiente TDP estiver inteiramente implementado e gerido pelo ArgoCD.
Opção A — Remover uma app raiz do tipo app-of-apps
Se o ambiente utilizar uma Application raiz que controla as demais, a remoção pode começar por ela:
argocd app delete <root-application> --cascade
Use esta opção apenas quando o modelo app-of-apps estiver validado no seu ambiente e tiver a certeza de que a exclusão da app raiz removerá corretamente as aplicações filhas e seus recursos.
Opção B — Remover as Applications individualmente em ordem reversa de dependência
Quando não houver app raiz, ou quando quiser controlo total da desmontagem, remova as Applications uma a uma:
argocd app delete tdp-superset --cascade
argocd app delete tdp-openmetadata --cascade
argocd app delete tdp-cloudbeaver --cascade
argocd app delete tdp-jupyter --cascade
argocd app delete tdp-airflow --cascade
argocd app delete tdp-clickhouse --cascade
argocd app delete tdp-trino --cascade
argocd app delete tdp-spark --cascade
argocd app delete tdp-nifi --cascade
argocd app delete tdp-ranger --cascade
argocd app delete tdp-iceberg --cascade
argocd app delete tdp-deltalake --cascade
argocd app delete tdp-hive-metastore --cascade
argocd app delete tdp-kafka --cascade
argocd app delete tdp-postgresql --cascade
Verificar se ainda restam Applications
argocd app list
Verificar se ainda restam recursos no namespace
kubectl get all -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.
Remover a infraestrutura do ArgoCD
Esta etapa é separada da remoção do ambiente TDP.
Primeiro remova todas as Applications e os workloads geridos pelo ArgoCD. Só depois remova o próprio ArgoCD, se isso fizer parte do objetivo.
O ArgoCD é removido via Helm, independentemente de como o ambiente TDP foi gerido.
Desinstalar as releases do ArgoCD
helm uninstall tdp-argo -n <namespace>
helm uninstall tdp-argo-crds -n <namespace>
A remoção de tdp-argo-crds deve ser avaliada com cuidado.
CRDs são recursos de escopo de cluster e podem ser compartilhados por outras instalações ou projetos no mesmo cluster.
Verificar CRDs restantes
kubectl get crds | grep argoproj.io
Para remover os CRDs manualmente, se necessário:
kubectl delete crds -l app.kubernetes.io/part-of=argocd
- argocd app delete
- argocd app list
- kubectl get all
Limpeza complementar
Verificar Persistent Volumes órfãos
Após remover os PVCs, verifique se existem PVs em estado Released:
kubectl get pv | grep <namespace>

Se houver PVs órfãos e não precisar mais deles:
kubectl delete pv <pv-name>

Remover o namespace, quando aplicável
Remova o namespace apenas quando ele for dedicado exclusivamente ao ambiente que está a ser desmontado.
kubectl delete namespace <namespace>
A remoção do namespace exclui todos os recursos namespaced ainda existentes nele, incluindo PVCs, ConfigMaps, Secrets e ServiceAccounts.
Se o namespace ficar preso em Terminating, verifique finalizers:
kubectl get namespace <namespace> -o json | jq '.spec.finalizers'
Para forçar a finalização:
kubectl get namespace <namespace> -o json | jq '.spec.finalizers = []' | \
kubectl replace --raw "/api/v1/namespaces/<namespace>/finalize" -f -
Verificação final
Após a remoção, valide se ainda restou algo no ambiente.
Verificar recursos restantes no namespace
kubectl get all -n <namespace>
Verificar releases Helm restantes
helm list -n <namespace>
Verificar Applications restantes no ArgoCD
argocd app list
Verificar PVCs restantes
kubectl get pvc -n <namespace>
Verificar PVs restantes
kubectl get pv | grep <namespace>
Resumo
| Situação | Caminho principal | Observação |
|---|---|---|
| Componente instalado diretamente via Helm | helm uninstall <release> -n <namespace> | Use quando houver release Helm real |
| Componente gerido pelo ArgoCD | argocd app delete <application-name> --cascade | Remove a Application e os recursos geridos |
| Remoção completa do ambiente gerido pelo ArgoCD | argocd app delete ... --cascade em ordem reversa, ou remoção da app raiz | PVCs e PVs podem exigir limpeza manual |
| Remoção do próprio ArgoCD | helm uninstall tdp-argo -n <namespace> | Deve ocorrer depois da remoção das Applications |
| Remoção completa do ambiente instalado via Helm | sequência de helm uninstall em ordem reversa | Fluxo separado do modelo ArgoCD |
| Limpeza de dados persistentes | kubectl delete pvc ... e, se necessário, kubectl delete pv ... | Etapa manual e destrutiva |
| Limpeza do namespace | kubectl delete namespace <namespace> | Só quando o namespace for dedicado ao ambiente removido |