> ## 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.

# Desinstalación del despliegue de Midaz

> Elimina por completo un despliegue Helm de Midaz de Kubernetes — recursos gestionados, volúmenes persistentes, secrets y el propio namespace.

Esta guía te lleva por el proceso completo de eliminación de un despliegue de Midaz de Kubernetes. `helm uninstall` elimina los recursos gestionados por Helm y, algo importante, **también elimina el PersistentVolumeClaim de MongoDB junto con ellos**. Solo sobreviven los volúmenes de PostgreSQL, porque se crean a partir de un `volumeClaimTemplate` de StatefulSet. Esta página cubre qué se va con el release, qué permanece y cómo limpiar el resto.

<Warning>
  Desinstalar Midaz elimina permanentemente los datos de la aplicación. `helm uninstall` por sí solo destruye el volumen de MongoDB: haz la copia de seguridad **antes** de ejecutarlo, no después. Esta operación es irreversible.
</Warning>

## Qué elimina la desinstalación y qué sobrevive

***

| Recurso                                                                                         | Con `helm uninstall`                                                                                     |
| :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- |
| Deployments, Services, ConfigMaps, Secrets, ServiceAccounts, RBAC, HPA, PDB, NetworkPolicy      | Se eliminan                                                                                              |
| Jobs de bootstrap (`<release>-bootstrap-postgres`, `-bootstrap-mongodb`, `-bootstrap-rabbitmq`) | Se eliminan (también se autoeliminan 300 s después de finalizar)                                         |
| **PVC `<release>-mongodb`**                                                                     | **Se elimina — los datos de MongoDB se pierden**                                                         |
| PVCs `data-<release>-postgresql-primary-0`, `data-<release>-postgresql-replication-0`           | Sobreviven (los volumeClaimTemplates de StatefulSet no se recolectan)                                    |
| Almacenamiento de RabbitMQ                                                                      | No hay nada que eliminar — RabbitMQ usa `emptyDir`, así que sus datos ya desaparecen al detenerse el pod |
| Secrets que creaste tú mismo (`kubectl create secret`)                                          | Sobreviven                                                                                               |
| El namespace                                                                                    | Sobrevive                                                                                                |

<Danger>
  Ningún recurso del chart lleva la anotación `helm.sh/resource-policy: keep`. No confíes en Helm para proteger ningún volumen.
</Danger>

## Prerrequisitos

***

Antes de desinstalar, respalda tus bases de datos — `helm uninstall` destruye el volumen de MongoDB:

```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
```

Los volúmenes de PostgreSQL sobreviven a `helm uninstall`, pero la limpieza de PVCs más abajo los destruye. Respalda también PostgreSQL si vas a ejecutar ese paso:

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

Luego respalda tus valores actuales de Helm para poder reinstalar con la misma configuración si es necesario:

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

También respalda los releases de plugins que ejecutes por separado (los plugins se instalan en su propio 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>
  CRM forma parte del chart de Midaz, no es un release aparte — no existe un chart `plugin-crm` que respaldar o desinstalar.
</Note>

Verifica todos los releases que se verán afectados:

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

***

## Desinstalación del release de Helm

***

Ejecuta el siguiente comando para desinstalar el release de Helm de Midaz:

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

Esto elimina todos los recursos de Kubernetes creados por el chart de Helm — Deployments, StatefulSets, Services, Ingresses, ConfigMaps, Secrets gestionados por el chart, ServiceAccounts, recursos RBAC, Jobs de bootstrap **y el PVC `midaz-mongodb`**. No elimina los PVCs del StatefulSet de PostgreSQL, los Secrets que creaste fuera de Helm, ni el namespace.

Verifica que todos los pods gestionados por Helm hayan sido eliminados:

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

***

## Limpieza de recursos persistentes

***

### PersistentVolumeClaims

Tras la desinstalación, lo que queda son los claims de PostgreSQL. Lístalos para confirmar:

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

Deberías ver `data-midaz-postgresql-primary-0` y `data-midaz-postgresql-replication-0`. El claim `midaz-mongodb` ya no está — Helm lo eliminó junto con el release.

Elimina los PVCs restantes del namespace (esto destruye los datos de PostgreSQL):

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

O elimina PVCs específicos por nombre:

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

<Danger>
  Eliminar estos PVCs destruye permanentemente los datos del volumen de PostgreSQL — el sistema de registro del ledger. Asegúrate de tener copias de seguridad de las bases de datos antes de ejecutar este comando.
</Danger>

### Secrets

Los Secrets creados fuera del ciclo de vida del release de Helm (por ejemplo, con `kubectl create secret`) no son eliminados por `helm uninstall`. Lista todos los secrets del namespace e identifica los que ya no son necesarios:

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

Elimina secrets huérfanos individuales:

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

O elimina todos los secrets del namespace:

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

### ConfigMaps

Los ConfigMaps creados manualmente o por jobs de bootstrap también pueden permanecer. Lístalos:

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

Elimina ConfigMaps huérfanos:

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

***

## Limpieza del namespace

***

Una vez que todos los recursos dentro del namespace han sido eliminados, borra el namespace:

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

<Note>
  Eliminar el namespace eliminará forzosamente cualquier recurso restante dentro de él. Si un recurso está atascado en estado `Terminating`, puede que necesites eliminar sus finalizers manualmente.
</Note>

Verifica que el namespace haya sido eliminado:

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

***

## Limpieza completa

***

Para entornos de staging, evaluación o CI donde una eliminación completa es segura, el siguiente script automatiza todo el proceso:

<Danger>
  **La pérdida de datos es permanente.** Ejecuta esto solo en entornos donde tengas copias de seguridad confirmadas o donde la pérdida de datos sea aceptable (staging, evaluación, CI). No ejecutes esto en producción sin una copia de seguridad completa y la aprobación del equipo.
</Danger>

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

NAMESPACE=midaz
RELEASE=midaz

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

echo "==> Eliminando todos los PersistentVolumeClaims"
kubectl delete pvc --all -n "$NAMESPACE" || true

echo "==> Eliminando todos los Secrets"
kubectl delete secrets --all -n "$NAMESPACE" || true

echo "==> Eliminando todos los ConfigMaps"
kubectl delete configmaps --all -n "$NAMESPACE" || true

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

echo "==> Listo. Midaz ha sido eliminado completamente."
```

Guarda esto como `midaz-cleanup.sh`, hazlo ejecutable (`chmod +x midaz-cleanup.sh`) y ejecútalo con `./midaz-cleanup.sh`.

***

## Consideraciones para producción

***

<Warning>
  En producción, una desinstalación completa requiere una coordinación cuidadosa. Sigue estos pasos antes de ejecutar cualquier comando de limpieza:

  1. **Respalda todas las bases de datos *antes* de `helm uninstall`.** Exporta un snapshot completo de PostgreSQL y MongoDB — el volumen de MongoDB lo destruye la propia desinstalación, no los pasos de limpieza.
  2. **Exporta datos críticos.** Si algún dato necesita ser migrado o conservado, expórtalo antes de desinstalar.
  3. **Coordina con tu equipo.** Notifica a todos los interesados sobre el tiempo de inactividad planificado y confirma la ventana de mantenimiento.
  4. **Desinstala los plugins primero.** Elimina los releases de plugins (Fees, Pix) antes de desinstalar el release principal de Midaz. CRM no requiere desinstalación aparte — viene dentro del chart de Midaz.
  5. **Verifica que no haya tráfico.** Confirma que ningún tráfico activo esté llegando a los servicios antes de proceder.
</Warning>

Desinstala los plugins antes del release principal:

```bash theme={null}
# Omite un release realmente ausente y aborta ante cualquier otro error
# (auth, API, timeout) en lugar de dejarlo instalado en silencio.
# En Helm 3.13+ esto es simplemente: helm uninstall <release> -n midaz-plugins --ignore-not-found
for release in plugin-fees plugin-br-pix-direct-jd; do
  if err=$(helm status "$release" -n midaz-plugins 2>&1 >/dev/null); then
    helm uninstall "$release" -n midaz-plugins
  elif printf '%s' "$err" | grep -q 'release: not found'; then
    echo "Se omite $release — no está instalado."
  else
    echo "Abortando: helm status $release falló: $err" >&2
    exit 1
  fi
done
helm uninstall midaz -n midaz
```

Luego procede con los pasos de limpieza de recursos persistentes descritos arriba.

***

## Recursos relacionados

* [Desplegar Midaz con Helm](/es/platform/helm/midaz/midaz-installation) — Guía de instalación si necesitas reinstalar
* [Actualizar Midaz y plugins con Helm](/es/platform/helm/midaz/midaz-upgrade-guide) — Procedimientos de actualización y rollback
* [Solución de problemas](/es/platform/helm/midaz/midaz-troubleshooting) — Diagnosticar problemas antes de decidir desinstalar
* [Compatibilidad de versiones](/es/platform/helm/helm-version-compatibility) — Tabla de referencia de versiones
