Saltar a contenido

Rollback

Usar esta página cuando el cutover falla antes de que system-app-pre termine bien en 2.16. Hasta ese momento, dejar los Deployments embebidos en 0 réplicas y conservar sus PVC. Después de ese Job, las escrituras nuevas existen solo en la base externa. El rollback es un restore del dump fresco. No hay downgrade de OLM. Copia para clonar el repo: docs/runbooks/07-rollback.md (inglés: docs/runbooks/en/07-rollback.md).

Si los PVC embebidos ya se borraron, el rollback es un restore desde backup (pg_dump, dump.rdb), no volver externalComponents a pods que ya no existen.

Rutas de ownership y rollback

Quién opera qué

Namespace Gestiona el operador Quien opera
3scale system-app, APIcast, Zync, zync-database, system-storage Secrets de conexión (system-database, system-redis, backend-redis)
3scale-db Nada del operador 3scale tras externalComponents PostgreSQL 15, ambos Redis 7, PVC, imágenes, backups, NetworkPolicy

Ver Motivación para external ≠ off-cluster y qué deja de reconciliar el operador.

Falla el restore de PostgreSQL

  1. Volver externalComponents.system.database a false en el APIManager.
  2. Reaplicar PostgreSQL embebido en el spec del APIManager si hace falta: spec.system.database.postgresql: {}.
  3. Restaurar el secret system-database desde el backup (system-database-secret.yaml).
  4. Subir el operador 3scale y system-postgresql embebido.
  5. Validar Admin Portal y APIs contra los datos embebidos.
  6. No borrar el PVC nuevo de PostgreSQL en 3scale-db hasta confirmar el embebido.

RDB de Redis vacío o falla el restore

  1. Volver externalComponents.system.redis y externalComponents.backend.redis a false.
  2. Restaurar secrets system-redis y backend-redis desde backup.
  3. Subir backend-redis y system-redis embebidos en 3scale 2.15.
  4. Validar portales y tráfico de API.
  5. No borrar los PVC nuevos de Redis en 3scale-db hasta confirmar el embebido.

Si dump.rdb quedó vacío en Git Bash, usar docs/runbooks/02-bis-externalize-redis-windows.md (MSYS_NO_PATHCONV=1, oc exec + cat) y repetir Externalizar Redis.

Bucle de preflight del operador 3scale 2.16

Síntomas: el operador 2.16 se instala pero el upgrade de instancia no completa; los chequeos de versión fallan cada ~10 minutos.

  1. Confirmar PostgreSQL ≥ 15.0 y Redis ≥ 7.2 en los pods externos (Actualizar operador a 2.16).
  2. Aplicar el GRANT de PostgreSQL 15 si system-app-pre reporta permission denied for schema public — ver GRANT CREATE en schema public.
  3. Borrar el Job system-app-pre y dejar que el operador lo recree.
  4. No combinar upgrade de OpenShift y de 3scale en la misma ventana.
  5. Si las versiones no se pueden corregir a tiempo, quedarse en canal threescale-2.15 hasta cumplir preflight.

Trampa GitOps (Redis)

Si Argo CD o RHACM sigue con redis-config.path en kustomize/bases/redis-config-restore, selfHeal: true revierte el modo persistencia tras el cutover. Un restart del pod puede borrar datos de Redis. Pasar a redis-config-persist antes de dar por cerrada la migración. Ver Trampas de GitOps y Operación día 2.

Próximos pasos