Saltar para o conteúdo principal
Versão Next 🚧

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.

Atenção

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:

Terminal input
helm list -n <namespace>
Figura 1 - Releases Helm existentes
Figura 1 - Releases Helm existentes

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:

Terminal input
argocd app list
Figura 2 - Applications gerenciadas pelo ArgoCD
Figura 2 - Applications gerenciadas pelo ArgoCD

Se o componente aparecer como Application do ArgoCD, a remoção principal é feita com argocd app delete.

Regra prática

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:

Terminal input
helm get values <release> -n <namespace> -o yaml > <release>-values-backup.yaml
Figura 3 - Exportação da configuração da release Helm
Figura 3 - Exportação da configuração da release Helm
Nota

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:

Terminal input
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:

Terminal input
kubectl get pvc -n <namespace>
Figura 4 - PVCs associados à release
Figura 4 - PVCs associados à release

Para restringir a consulta a uma release Helm específica:

Terminal input
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:

Terminal input
kubectl get volumesnapshotclass

Crie o snapshot:

Terminal input
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:

Terminal input
kubectl get volumesnapshot -n <namespace>

Remover componentes

Desinstalar um componente individual

Use este fluxo quando o componente tiver sido instalado diretamente como release Helm.

Desinstalar a release

Terminal input
helm uninstall <release> -n <namespace>
Figura 5 - Desinstalação de um componente via Helm
Figura 5 - Desinstalação de um componente via Helm

Verificar se os recursos da release foram removidos

Terminal input
kubectl get all -n <namespace> -l app.kubernetes.io/instance=<release>
Figura 6 - Recursos gerenciados pela release após a desinstalação
Figura 6 - Recursos gerenciados pela release após a desinstalação
note

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

Terminal input
kubectl get pvc -n <namespace> -l app.kubernetes.io/instance=<release>
Figura 7 - PVCs remanescentes
Figura 7 - PVCs remanescentes
Nota

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

Terminal input
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

Terminal input
kubectl get pvc -n <namespace>

Remover PVCs, se a remoção for definitiva

Terminal input
kubectl delete pvc --all -n <namespace>
Figura 8 - Remoção definitiva PVCs
Figura 8 - Remoção definitiva PVCs
Perda de dados

Excluir PVCs remove permanentemente os dados persistidos. Faça isso apenas quando a desmontagem for definitiva e os backups já estiverem concluídos.

Limpeza complementar

Verificar Persistent Volumes órfãos

Após remover os PVCs, verifique se existem PVs em estado Released:

Terminal input
kubectl get pv | grep <namespace>
Figura 13 - Verificação de Persistent Volumes órfãos
Figura 13 - Verificação de Persistent Volumes órfãos

Se houver PVs órfãos e não precisar mais deles:

Terminal input
kubectl delete pv <pv-name>
Figura 14 - Delete PVs
Figura 14 - Delete PVs

Remover o namespace, quando aplicável

Remova o namespace apenas quando ele for dedicado exclusivamente ao ambiente que está sendo desmontado.

Terminal input
kubectl delete namespace <namespace>
Atenção

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:

Terminal input
kubectl get namespace <namespace> -o json | jq '.spec.finalizers'

Para forçar a finalização:

Terminal input
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

Terminal input
kubectl get all -n <namespace>

Verificar releases Helm restantes

Terminal input
helm list -n <namespace>

Verificar Applications restantes no ArgoCD

Terminal input
argocd app list

Verificar PVCs restantes

Terminal input
kubectl get pvc -n <namespace>

Verificar PVs restantes

Terminal input
kubectl get pv | grep <namespace>

Resumo

SituaçãoCaminho principalObservação
Componente instalado diretamente via Helmhelm uninstall <release> -n <namespace>Use quando houver release Helm real
Componente gerenciado pelo ArgoCDargocd app delete <application-name> --cascadeRemove a Application e os recursos gerenciados
Remoção completa do ambiente gerenciado pelo ArgoCDargocd app delete ... --cascade em ordem reversa, ou remoção da app raizPVCs e PVs podem exigir limpeza manual
Remoção do próprio ArgoCDhelm uninstall tdp-argo -n <namespace>Deve ocorrer depois da remoção das Applications
Remoção completa do ambiente instalado via Helmsequência de helm uninstall em ordem reversaFluxo separado do modelo ArgoCD
Limpeza de dados persistenteskubectl delete pvc ... e, se necessário, kubectl delete pv ...Etapa manual e destrutiva
Limpeza do namespacekubectl delete namespace <namespace>Só quando o namespace for dedicado ao ambiente removido