Recupera un Deployment con un rollback
Son las 9:00 y el canal de incidencias arde: la tienda va lenta desde que anoche alguien desplegó "la versión 2". Nadie sabe muy bien qué se desplegó, solo que el despliegue "no terminó nunca". Te toca a ti.
Empieza por evaluar los daños desde la pestaña dev-machine:
kubectl get deployment tienda
kubectl get pods -l app=tienda
kubectl rollout status deployment/tienda
Observa el detalle interesante: hay Pods viejos que siguen sirviendo tráfico y Pods nuevos que no arrancan. Es la estrategia RollingUpdate del Deployment protegiendo el servicio: no mata lo viejo hasta que lo nuevo está listo. Por eso la tienda "va lenta" pero no está caída.
Tu misión tiene dos partes: averiguar por qué la versión 2 no arranca, y devolver el Deployment a un estado correcto con sus 3 réplicas disponibles. La forma profesional de hacerlo no es editar a mano, sino usar el mecanismo de rollback que el propio Deployment ofrece.
Pista 1
Los Pods nuevos están en ImagePullBackOff: kubectl describe sobre uno de ellos te dirá qué imagen intenta descargar. Compárala con la que usan los Pods viejos que sí funcionan.
Pista 2
Cada cambio en la plantilla de un Deployment genera una revisión numerada. El subcomando rollout de kubectl sabe listar ese historial y también deshacer el último cambio. Explora kubectl rollout --help.
Por qué importa
En producción, la velocidad de recuperación importa más que la elegancia del diagnóstico. Un rollout undo bien ejecutado devuelve el servicio a su último estado bueno en segundos, y te compra el tiempo para investigar con calma qué pasó con la versión 2. Este reflejo (detectar rollout atascado, deshacer, investigar después) es de lo más valioso que te llevas de este curso.