> ## 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 el despliegue de Midaz

> Elimina por completo un despliegue de Midaz con Helm de Kubernetes: los recursos gestionados por Helm, los volúmenes persistentes, los secrets y el namespace mismo.

<Warning>
  La orientación sobre CRM y Fees marcada como legacy en esta página aplica solo a los releases legacy que ya existen. Midaz v4 despliega el Ledger unificado y sirve CRM y Fees en `/v2`.
</Warning>

El repositorio de Helm conserva un workload `crm.enabled` y el chart `plugin-fees-helm` para releases de aplicación anteriores. Son superficies de compatibilidad legacy, no el modelo de despliegue de Midaz v4.

Esta guía te lleva por la eliminación completa de un despliegue de Midaz de Kubernetes. `helm uninstall` elimina los recursos gestionados por Helm. Lo que pasa con los volúmenes de base de datos depende de los subcharts incluidos, así que lee sus ajustes de almacenamiento antes de ejecutarlo.

<Warning>
  Desinstalar Midaz puede eliminar datos de la aplicación de forma permanente. Respalda **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      | Eliminados                                                                                           |
| Jobs de bootstrap (`<release>-bootstrap-postgres`, `-bootstrap-mongodb`, `-bootstrap-rabbitmq`) | Eliminados (también se eliminan solos 300s después de terminar)                                      |
| PersistentVolumeClaims del PostgreSQL, MongoDB y RabbitMQ incluidos                             | Depende de cómo los crea cada subchart. Lee los ajustes de almacenamiento de la versión que ejecutas |
| Secrets que creaste tú (`kubectl create secret`)                                                | Sobreviven                                                                                           |
| El namespace                                                                                    | Sobrevive                                                                                            |

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

## Requisitos previos

***

Antes de desinstalar, lista los claims para saber qué existe:

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

Luego respalda tus bases de datos:

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

Luego respalda tus values actuales de Helm para poder reinstalar con la misma configuración si lo necesitas:

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

Respalda también cualquier release de plugin 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 es un módulo dentro del chart `midaz-helm`. Lo habilitas con el bloque de values `crm`. No existe un chart de CRM. No lo respaldas ni lo desinstalas por separado.
</Note>

Verifica todos los releases que afecta la desinstalación:

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

***

## Desinstalar el Helm release

***

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

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

Esto elimina los recursos de Kubernetes que creó el Helm chart: Deployments, StatefulSets, Services, Ingresses, ConfigMaps, Secrets gestionados por el chart, ServiceAccounts, recursos de RBAC y Jobs de bootstrap. No elimina los Secrets que creaste fuera de Helm ni el namespace.

Verifica que no quedan pods gestionados por Helm:

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

***

## Limpiar los recursos persistentes

***

### PersistentVolumeClaims

Lista los claims que sobrevivieron a la desinstalación:

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

Elimina solo los PVC de Midaz que identificaste arriba. No uses un delete para todo el namespace cuando otros workloads comparten el namespace:

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

<Danger>
  Eliminar estos PVC destruye de forma permanente los datos del volumen, el sistema de registro del ledger. Confirma que los backups de base de datos están en su lugar antes de ejecutar este comando.
</Danger>

### Secrets

`helm uninstall` no elimina los secrets creados fuera del ciclo de vida del Helm release (por ejemplo, `kubectl create secret`). Lista todos los secrets del namespace e identifica los que ya no necesitas:

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

Elimina los secrets huérfanos de a uno:

```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 los Jobs de bootstrap también pueden quedar. Lístalos:

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

Elimina los ConfigMaps huérfanos:

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

***

## Limpieza del namespace

***

Cuando no quedan recursos dentro del namespace, elimina el namespace mismo:

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

<Note>
  Eliminar el namespace quita por la fuerza cualquier recurso que quede dentro. Si un recurso está atascado en estado `Terminating`, puedes necesitar quitar sus finalizers manualmente.
</Note>

Verifica que el namespace ya no existe:

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

***

## Limpieza completa

***

Para entornos de staging, evaluación o CI donde un desmontaje completo es seguro, el siguiente script automatiza todo el proceso:

<Danger>
  **La pérdida de datos es permanente.** Ejecuta esto solo en entornos donde confirmaste los backups o donde la pérdida de datos es aceptable (staging, evaluación, CI). No lo ejecutes en producción sin un backup completo y la aprobación del equipo. El script supone un namespace que contiene solo Midaz. Elimina cada claim, Secret y ConfigMap de ese 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."
```

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

***

## Consideraciones de producción

***

<Warning>
  En producción, una desinstalación completa requiere 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.
  2. **Exporta los datos críticos.** Si debes migrar o preservar algún dato, expórtalo antes de desinstalar.
  3. **Coordina con tu equipo.** Avisa a todos los stakeholders del downtime planificado y confirma la ventana de mantenimiento.
  4. **Desinstala los plugins primero.** Elimina los releases de plugins (Fees, Pix) antes de desinstalar el release central de Midaz.
  5. **Verifica que no haya tráfico.** Confirma que ningún tráfico activo llega a los servicios antes de continuar.
</Warning>

Desinstala los plugins antes del release central:

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

Luego continúa con los pasos de limpieza de recursos persistentes que se describen arriba.

***

## Recursos relacionados

***

* [Desplegar Midaz con Helm](/es/platform/deploy/midaz/midaz-installation): guía de instalación si necesitas reinstalar
* [Actualizar Midaz y los plugins con Helm](/es/platform/deploy/midaz/midaz-upgrade-guide): procedimientos de actualización y rollback
* [Solución de problemas](/es/platform/deploy/midaz/midaz-troubleshooting): diagnostica problemas antes de decidir desinstalar
* [Compatibilidad de versiones del chart de Midaz](/es/platform/deploy/helm-version-compatibility): metadatos actuales del chart y de la aplicación
