Saltar al contenido

Cómo funcionan los despliegues ​

Cada servicio se despliega por su cuenta. Deploy (o Redeploy) en un servicio compila o descarga ese servicio y lo reinicia con su configuración actual; los demás servicios del proyecto siguen funcionando exactamente igual. Al añadir un servicio se despliega automáticamente, y los cambios de red vuelven a desplegar el servicio al que pertenecen.

Para desplegar todos los servicios a la vez, por ejemplo después de editar varios, usa Deploy all en los Settings del proyecto. Deploy all también retira los servicios que hayas eliminado del proyecto.

Pasos ​

Cada servicio pasa por estos estados, que se muestran en su Overview y en la barra lateral:

EstadoQué está pasando
PendingEsperando su turno en el despliegue
BuildingUn servicio Git se está compilando en las máquinas de compilación de Zenavo
DeployingSe están aplicando los objetos de Kubernetes en el servidor
StartingLos contenedores arrancan y esperan a superar su comprobación de salud
RunningTodas las instancias están listas
Failed / CrashedLa compilación o el despliegue fallaron, o el contenedor sale una y otra vez. Abre Logs para ver el motivo.
  1. Compilar. Los servicios Git se clonan y compilan (Plan de compilación) y la imagen se guarda en el almacén de imágenes de Zenavo, un repositorio por servicio, desde el que la descargan los servidores (los de China continental, desde una copia en Shanghái). Los servicios de imagen se resuelven a un digest, así que una reversión ejecuta exactamente la misma imagen.
  2. Aplicar. Se aplica el servicio; con Deploy all, los servicios se aplican en orden de dependencias y cada uno espera a que sus dependencias estén listas.
  3. Desplegar. Los servicios sin volúmenes se actualizan sin tiempo de inactividad: la nueva instancia debe estar sana antes de que se detenga la anterior. Los servicios con volúmenes se detienen primero y luego arrancan, para que nunca haya dos instancias escribiendo los mismos datos.
  4. Inicializar. Si un servicio tiene comandos de inicialización (de una plantilla), se ejecutan una vez en una tarea con la misma imagen, variables y volúmenes antes de que arranque el servicio.

Cola de compilación ​

Las compilaciones de Git se ejecutan en las máquinas de compilación de Zenavo, que comparten todos los equipos. Un equipo ejecuta a la vez tantas compilaciones como permita su plan (consulta Uso y facturación); las demás esperan, y su registro lo indica.

Cuando las máquinas están ocupadas, la que queda libre va a la compilación en espera del plan más alto: Team, luego Pro, luego Dev, luego Free, y dentro de un mismo plan, la que llegó antes. Una compilación que lleva 10 minutos esperando pasa la siguiente sea cual sea su plan, así que ninguna espera mucho. Desplegar una imagen de Docker o una base de datos no compila nada y nunca espera aquí.

Si Zenavo se reinicia durante un despliegue ​

El plano de control de Zenavo se reinicia de vez en cuando, por ejemplo al actualizarse. Un despliegue en curso continúa desde donde estaba, y su registro lo indica (Control plane restarted; resuming from …):

  • Durante la compilación: el despliegue vuelve a la cola y se compila de nuevo.
  • Después de la compilación: se despliegan las imágenes ya compiladas, sin volver a compilar.
  • Durante la publicación: tu servidor sigue publicando por sí mismo. Zenavo aplica solo los servicios a los que aún no había llegado, espera a que los demás estén listos y después marca el despliegue como correcto o fallido y te avisa como siempre.

Si en ese momento se estaba ejecutando el comando de inicialización de un servicio (una migración de base de datos, por ejemplo), Zenavo no lo detiene ni lo vuelve a ejecutar: el despliegue se marca como interrumpido para que compruebes el resultado del comando antes de volver a desplegar. Un despliegue continúa tras 2 reinicios como máximo; tras un tercero también se marca como interrumpido. Otras operaciones, como las copias de seguridad o mover un proyecto, nunca se repiten automáticamente: se marcan como interrumpidas para que las revises.

Registros ​

La salida de cada despliegue está en Logs → Build Logs mientras se ejecuta y después. Consulta Registros.

Sin relación con Zeabur.