Mi servicio se despliega pero nunca pasa a healthy
La compilación se completa, las réplicas se inician, pero el despliegue sigue pendiente, se marca como unhealthy o nunca recibe tráfico.
Qué significa esto
La verificación de estado de la plataforma —que comprueba que se puede acceder al puerto de tu app— nunca se completa correctamente, así que el tráfico nunca se redirige a las nuevas réplicas.
Por qué puede pasar esto
- Tu app no está escuchando en el puerto esperado. Lizard inyecta una variable de entorno
PORT(puerto de contenedor predeterminado3000) y comprueba que se pueda acceder a tu app ahí. Si tu app tiene otro puerto fijado en el código, o nunca se enlaza a ninguno, la verificación de estado falla indefinidamente. Una app de Python es el caso más habitual:gunicornyuvicornse enlazan a127.0.0.1a menos que les indiques otra cosa, y la sonda viene desde fuera del proceso. Hosting de apps Python tiene la línea--bind 0.0.0.0:$PORTque necesita cada framework. - El servicio está accidentalmente en modo worker. Configurar
containerPort=0pone un servicio en modo worker, lo que omite por completo la verificación de estado y el registro en el balanceador de carga. Un servicio que debería servir HTTP pero se cambió acontainerPort=0se desplegará “correctamente” y simplemente nunca servirá nada: el modo worker oculta el problema subyacente de arranque en lugar de mostrarlo.
Posibles soluciones
Comprueba el puerto actual
lizard port --service apiSi esto muestra worker mode, el servicio tiene containerPort=0. Vuelve a configurarlo con un puerto real si este servicio debe servir HTTP:
lizard port 3000 --service api
lizard redeploy --service apiConfirma que tu app está escuchando donde Lizard espera
Revisa los logs de ejecución para detectar errores de arranque y verifica el puerto al que la app realmente se enlazó frente al que Lizard inyectó:
lizard logs --service api
lizard ssh --service api -- env | grep PORTVer también
- Background Workers — cuándo
containerPort=0es (y no es) la opción correcta. - Despliegues → lifecycle — dónde se sitúa la verificación de estado dentro de un despliegue.