> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Desinstalar o deploy do Midaz

> Remova por completo um deploy Helm do Midaz no Kubernetes: recursos gerenciados pelo Helm, volumes persistentes, secrets e o próprio namespace.

<Warning>
  As orientações de CRM e Fees marcadas como legado nesta página valem apenas para releases legados que já existem. O Midaz v4 faz deploy do Ledger unificado e serve CRM e Fees em `/v2`.
</Warning>

O repositório Helm mantém uma carga de trabalho `crm.enabled` e o chart `plugin-fees-helm` para releases de aplicação mais antigos. Essas são superfícies de compatibilidade legadas, não o modelo de deploy do Midaz v4.

Este guia mostra como remover por completo um deploy do Midaz no Kubernetes. O `helm uninstall` remove os recursos gerenciados pelo Helm. O que acontece com os volumes de banco de dados depende dos subcharts empacotados, então leia as configurações de armazenamento deles antes de rodar o comando.

<Warning>
  Desinstalar o Midaz pode excluir permanentemente dados da aplicação. Faça backup **antes** de rodar, não depois. Esta operação é irreversível.
</Warning>

## O que a desinstalação exclui e o que permanece

***

| Recurso                                                                                         | No `helm uninstall`                                                                                   |
| :---------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------- |
| Deployments, Services, ConfigMaps, Secrets, ServiceAccounts, RBAC, HPA, PDB, NetworkPolicy      | Excluídos                                                                                             |
| Jobs de bootstrap (`<release>-bootstrap-postgres`, `-bootstrap-mongodb`, `-bootstrap-rabbitmq`) | Excluídos (eles também se autoexcluem 300s depois de terminar)                                        |
| PersistentVolumeClaims do PostgreSQL, do MongoDB e do RabbitMQ empacotados                      | Depende de como cada subchart os cria. Leia as configurações de armazenamento da versão que você roda |
| Secrets que você mesmo criou (`kubectl create secret`)                                          | Permanecem                                                                                            |
| O namespace                                                                                     | Permanece                                                                                             |

<Danger>
  Nenhum recurso do chart tem a annotation `helm.sh/resource-policy: keep`. Não conte com o Helm para proteger nenhum volume.
</Danger>

## Pré-requisitos

***

Antes de desinstalar, liste os claims para saber o que existe:

```bash theme={null}
kubectl get pvc -n midaz
```

Depois, faça backup dos seus bancos de dados:

```bash theme={null}
kubectl exec -n midaz midaz-mongodb-0 -- mongodump --archive=/tmp/dump.gz --gzip
kubectl cp midaz/midaz-mongodb-0:/tmp/dump.gz ./mongo-backup.gz
```

```bash theme={null}
kubectl exec -n midaz midaz-postgresql-primary-0 -- \
  pg_dumpall -U postgres > ./postgres-backup.sql
```

Depois, faça backup dos seus values atuais do Helm para reinstalar com a mesma configuração se precisar:

```bash theme={null}
helm get values midaz -n midaz > midaz-values-backup.yaml
```

Faça backup também de qualquer release de plugin que você roda separadamente (os plugins instalam no próprio namespace, `midaz-plugins`):

```bash theme={null}
helm get values plugin-fees -n midaz-plugins > plugin-fees-values-backup.yaml
helm get values plugin-br-pix-direct-jd -n midaz-plugins > plugin-pix-values-backup.yaml
```

<Note>
  O CRM é um módulo dentro do chart `midaz-helm`. Você o habilita com o bloco de values `crm`. Não existe chart de CRM. Você não faz backup dele nem o desinstala separadamente.
</Note>

Verifique todos os releases que a desinstalação afeta:

```bash theme={null}
helm list -n midaz
helm list -n midaz-plugins
```

***

## Desinstalar o release Helm

***

Rode o comando a seguir para desinstalar o release Helm do Midaz:

```bash theme={null}
helm uninstall midaz -n midaz
```

Isso remove os recursos do Kubernetes que o Helm chart criou: Deployments, StatefulSets, Services, Ingresses, ConfigMaps, Secrets gerenciados pelo chart, ServiceAccounts, recursos de RBAC e Jobs de bootstrap. Não remove os Secrets que você criou fora do Helm nem o namespace.

Verifique que não restam pods gerenciados pelo Helm:

```bash theme={null}
kubectl get pods -n midaz
```

***

## Limpar os recursos persistentes

***

### PersistentVolumeClaims

Liste os claims que sobreviveram à desinstalação:

```bash theme={null}
kubectl get pvc -n midaz
```

Exclua apenas os PVCs do Midaz que você identificou acima. Não exclua tudo do namespace de uma vez quando outras cargas de trabalho compartilham o namespace:

```bash theme={null}
kubectl delete pvc <midaz-pvc-name> -n midaz
```

<Danger>
  Excluir esses PVCs destrói permanentemente os dados do volume, o sistema de registro do ledger. Confirme que os backups do banco de dados existem antes de rodar este comando.
</Danger>

### Secrets

O `helm uninstall` não remove secrets criados fora do ciclo de vida do release Helm (por exemplo, `kubectl create secret`). Liste todos os secrets do namespace e identifique os que você não precisa mais:

```bash theme={null}
kubectl get secrets -n midaz
```

Exclua secrets órfãos individualmente:

```bash theme={null}
kubectl delete secret <secret-name> -n midaz
```

Ou exclua todos os secrets do namespace:

```bash theme={null}
kubectl delete secrets --all -n midaz
```

### ConfigMaps

ConfigMaps criados manualmente ou por jobs de bootstrap também podem permanecer. Liste-os:

```bash theme={null}
kubectl get configmaps -n midaz
```

Exclua os ConfigMaps órfãos:

```bash theme={null}
kubectl delete configmap <configmap-name> -n midaz
```

***

## Limpeza do namespace

***

Quando nenhum recurso restar dentro do namespace, exclua o próprio namespace:

```bash theme={null}
kubectl delete namespace midaz
```

<Note>
  Excluir o namespace remove à força qualquer recurso que ainda esteja dentro dele. Se um recurso ficar travado no estado `Terminating`, você pode precisar remover os finalizers dele manualmente.
</Note>

Verifique que o namespace sumiu:

```bash theme={null}
kubectl get namespace midaz
```

***

## Limpeza completa

***

Para ambientes de staging, avaliação ou CI onde a remoção total é segura, o script a seguir automatiza o processo inteiro:

<Danger>
  **A perda de dados é permanente.** Rode isto apenas em ambientes onde você confirmou os backups ou onde a perda de dados é aceitável (staging, avaliação, CI). Não rode isto em produção sem um backup completo e a aprovação do time. O script supõe um namespace que contém apenas o Midaz. Ele remove cada claim, Secret e ConfigMap desse namespace.
</Danger>

```bash expandable theme={null}
#!/bin/bash
set -e

NAMESPACE=midaz
RELEASE=midaz

echo "==> Uninstalling Helm release: $RELEASE"
helm uninstall "$RELEASE" -n "$NAMESPACE" || true

echo "==> Deleting all PersistentVolumeClaims"
kubectl delete pvc --all -n "$NAMESPACE" || true

echo "==> Deleting all Secrets"
kubectl delete secrets --all -n "$NAMESPACE" || true

echo "==> Deleting all ConfigMaps"
kubectl delete configmaps --all -n "$NAMESPACE" || true

echo "==> Deleting namespace: $NAMESPACE"
kubectl delete namespace "$NAMESPACE" || true

echo "==> Done. Midaz has been fully removed."
```

Salve isto como `midaz-cleanup.sh`, torne-o executável (`chmod +x midaz-cleanup.sh`) e rode com `./midaz-cleanup.sh`.

***

## Considerações de produção

***

<Warning>
  Em produção, uma desinstalação completa exige coordenação cuidadosa. Siga estas etapas antes de rodar qualquer comando de limpeza:

  1. **Faça backup de todos os bancos de dados *antes* do `helm uninstall`.** Exporte um snapshot completo do PostgreSQL e do MongoDB.
  2. **Exporte os dados críticos.** Se você deve migrar ou preservar algum dado, exporte antes de desinstalar.
  3. **Combine com o seu time.** Avise todos os stakeholders sobre o downtime planejado e confirme a janela de manutenção.
  4. **Desinstale os plugins primeiro.** Remova os releases de plugin (Fees, Pix) antes de desinstalar o release principal do Midaz.
  5. **Verifique que não há tráfego.** Confirme que nenhum tráfego ativo chega aos serviços antes de prosseguir.
</Warning>

Desinstale os plugins antes do release principal:

```bash theme={null}
# Skips a release that is genuinely absent, and aborts on anything else
# (auth, API, timeout) instead of silently leaving it installed.
for release in plugin-fees plugin-br-pix-direct-jd; do
  if err=$(helm status "$release" -n midaz-plugins 2>&1 >/dev/null); then
    if ! helm uninstall "$release" -n midaz-plugins; then
      echo "Aborting: failed to uninstall $release." >&2
      exit 1
    fi
  elif printf '%s' "$err" | grep -q 'release: not found'; then
    echo "Skipping $release: not installed."
  else
    echo "Aborting: helm status $release failed: $err" >&2
    exit 1
  fi
done
helm uninstall midaz -n midaz
```

Depois, siga as etapas de limpeza de recursos persistentes descritas acima.

***

## Recursos relacionados

***

* [Fazer deploy do Midaz com Helm](/pt/platform/deploy/midaz/midaz-installation): guia de instalação se você precisar reinstalar
* [Fazer upgrade do Midaz e dos plugins via Helm](/pt/platform/deploy/midaz/midaz-upgrade-guide): procedimentos de upgrade e rollback
* [Solução de problemas](/pt/platform/deploy/midaz/midaz-troubleshooting): diagnostique problemas antes de decidir desinstalar
* [Compatibilidade de versões do chart do Midaz](/pt/platform/deploy/helm-version-compatibility): metadados atuais do chart e da aplicação
