Saltar al contenido
NyverraNyverra
⌘K
InicioArtículosSitio institucional
🇪🇸
Nyverra

Canal editorial

Artículos sobre tecnología, operaciones y partners — infraestructura, monitorización y entornos críticos.

Redes sociales

Explorar

  • Inicio
  • Artículos
  • Categorías
  • Etiquetas
  • Autores
  • Sobre
  • Contacto
  • RSS
  • Sitio institucional

Nyverra

  • Nuestros servicios
  • Casos de éxito
  • Socios

Contacto

Correo[email protected]WhatsApp(62) 99309-1592Portal del clienteITSM · tickets y SLA

Rua RB 18, S/N — Casa 01, Sala 01 · Residencial Buriti · Senador Canedo – GO, Brasil · CEP 75260-459

Horario: lun–vie, 08–18 h

© 2026 Nyverra. Todos los derechos reservados.

CNPJ: 61.571.209/0001-08 · Registro estatal: 20.291.265-5 · D-U-N-S®: 57-323-5796

blog.nyverra.com.br

Términos de usoPrivacidadCookies
Volver arriba
  1. Inicio
  2. Kubernetes
  3. Postmortem — El deploy que pasó el build y murió en el clúster
Kubernetes
#Curso Kubernetes#Kubernetes

Postmortem — El deploy que pasó el build y murió en el clúster

Wedson LopesWedson Lopes
31 de outubro de 20264 min de leitura

No todo incidente comienza con un apagón. Este comenzó con un deploy “verde” en el build y un rollout que nunca terminó.

Resumen

El pipeline construyó la imagen nueva, la importó en los nodos y actualizó el Deployment. Los pods nuevos entraron en CrashLoopBackOff. Los pods antiguos continuaron sirviendo, por lo que el sitio no cayó — pero el deploy quedó a medias durante 40 minutos, hasta el timeout del Jenkins.

Causa: el secret del clúster tenía APP_STORAGE_S3_ACCESSKEY/SECRETKEY = minioadmin. La imagen nueva incluía el guard ProdDefaultCredentialsGuard, que rechaza credenciales por defecto en el perfil prod. La imagen antigua no tenía el guard (o lo habían eliminado antes del cambio).

Peor: la imagen nueva ya había aplicado la migración Flyway 3.5. Volver a la imagen antigua pasó a fallar en la validación de Flyway. El camino era fix forward.

Línea de tiempo

Hora Evento
T+0 Pipeline inicia; build e importación de imágenes en los 3 workers
T+40 min Rollout del backend alcanza timeout de 900 s
T+41 min Pods nuevos en CrashLoopBackOff; pods antiguos 2/2 sirviendo
T+45 min Los logs muestran INF-SEC-01 (S3 por defecto)
T+50 min Intento de rollback falla: Flyway 3.5 aplicada
T+55 min Creado usuario MinIO dedicado; secret actualizado
T+60 min Imagen nueva promovida; rollout concluye
T+65 min Validación: readiness UP, /api/fornecedores 200, CNPG healthy

Causa raíz

  1. Deriva de configuración. El secret del clúster tenía credenciales por defecto de MinIO (minioadmin), mientras que la aplicación ya tenía un guard que las rechaza en producción.
  2. Build no valida el runtime. El build pasó; el guard solo se ejecuta en el arranque.
  3. Rollout sin preflight de credenciales. El pipeline no verificó el secret antes de cambiar la imagen.
  4. Migración aplicada antes del guard. Flyway se ejecutó, aplicó 3.5 y solo después el guard derribó el proceso. Esto hizo inviable el rollback.

Lo que funcionó

  • Los pods antiguos continuaron sirviendo durante el rollout (estrategia RollingUpdate).
  • El guard hizo su trabajo: rechazó la credencial por defecto en producción.
  • Los logs señalaron la causa en una línea.
  • El fix forward fue posible sin pérdida de datos.

Lo que no funcionó

  • El pipeline no tenía preflight de credenciales.
  • El rollback se intentó antes de notar la migración aplicada.
  • La alerta de deploy no diferenció “build ok” de “rollout ok”.
  • La credencial por defecto estaba en el clúster desde hace meses, sin rotación.

Corrección

  1. Crear un usuario MinIO dedicado (no por defecto) con política de lectura/escritura.
  2. Actualizar el secret portal-secrets con el nuevo access/secret.
  3. Promover la imagen nueva (fix forward).
  4. Validar readiness, endpoint crítico y base de datos.

El paso a paso está en el runbook docs/RUNBOOK-K8S-DEPLOY-INF-SEC-01.md del repositorio.

Lecciones

  1. Credencial por defecto es deuda técnica con intereses. Rota antes de que el guard te obligue.
  2. Preflight en el pipeline: falla antes del build si el secret tiene un valor por defecto.
  3. La migración es forward-only. Si la imagen nueva aplicó la migración, el rollback de imagen no es seguro.
  4. El rollout necesita timeout y alerta. 40 minutos es demasiado tiempo para descubrir un CrashLoop.
  5. Build verde no es deploy verde. Valida readiness y un endpoint de negocio, no solo /health.
  6. Ten un runbook de fix forward. El camino de vuelta puede no existir.

Checklist para tu pipeline

  • [ ] El pipeline valida credenciales/secretos antes de cambiar la imagen.
  • [ ] El rollout tiene timeout y alerta.
  • [ ] La validación post-deploy incluye un endpoint de negocio.
  • [ ] Sé si la imagen aplica migraciones.
  • [ ] Tengo un plan de fix forward y rollback de datos.
  • [ ] Las credenciales por defecto están rotadas.

Próximo

En el capítulo 09 vamos a exponer la aplicación con Services, Ingress, DNS y TLS — y a entender por qué la ruta real de tráfico importa incluso en las pruebas de carga.

Próximo: Curso Kubernetes 09 — Services, Ingress, DNS y TLS (próximamente). Mientras tanto, vuelve al índice del curso.

Compartir

Seguir leyendo

Lea también

  • Manual LSI / Broadcom MegaRAID — MegaCli y StorCLI
    Armazenamento

    Manual LSI / Broadcom MegaRAID — MegaCli y StorCLI

    Con esta guía, su equipo gana autonomía para diagnosticar rebuilds, resolver foreign configurations, gestionar BBU y CacheCade — con escenarios reales de producción documentados.

    31 de outubro de 202620 min de leitura
  • Nginx Cheatsheet

    Nginx Cheatsheet

    Guía de bolsillo con ejemplos listos para configurar Nginx en producción: desde instalación y virtual hosts hasta ajuste de rendimiento y resolución de problemas.

    31 de outubro de 202612 min de leitura
  • Curso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa
    Kubernetes

    Curso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa

    Qué prometer, cómo medir y qué hacer cuando el error se dispara: SLI, SLO, presupuesto de error, alertas que despiertan a alguien y postmortem sin caza de brujas.

    31 de outubro de 20265 min de leitura

Comentarios

Aún sin comentarios

Sea el primero en compartir su opinión sobre este artículo.

Deje un comentario

Newsletter

Reciba nuevos artículos

Suscríbase para recibir publicaciones del blog Nyverra en su correo. Enviaremos un enlace de confirmación.

​