Sé que este es un hilo viejo, pero la solución es mucho más fácil de lo que la mayoría de las respuestas aquí hacen.
Cómo actualizar el contenedor en ejecución en dos pasos:
A continuación, se supone que tiene un servicio que ejecuta una tarea que hace referencia a un contenedor etiquetado latest
(o cualquier otra etiqueta estática que no cambie entre las actualizaciones del contenedor).
- Sube tu nuevo contenedor al repositorio
- Mata manualmente tus tareas
Si el objetivo es que tengamos una nueva construcción en la naturaleza, realmente no necesitamos confiar en nuestro servicio para eso (y diría que no deberíamos confiar en él). Si elimina su tarea, el servicio reconocerá que no tiene las Desired Count
tareas en ejecución y simplemente activará una nueva. Esto activará una nueva extracción de su contenedor, basado en la misma etiqueta.
Los servicios ECS son una red de seguridad HA, no un reemplazo para su canalización de CD / CI.
Bonificación: si el objetivo es que un servicio reconozca que se ha enviado un nuevo contenedor (independientemente de las etiquetas), debemos considerar las implicaciones de eso. ¿Realmente queremos un servicio básico que controle nuestro canal de implementación para nosotros? Probablemente no. Idealmente, empujará sus contenedores con diferentes etiquetas (basadas en versiones de lanzamiento o algo así). En este caso, la barrera para la implementación es que el servicio debe ser notificado de algo nuevo; nuevamente, es una red de seguridad para el servicio, y nada más.
Cómo implementar nuevas etiquetas en tres pasos:
- Sube tu nuevo
container:tag
al repositorio
- Cree una nueva definición de tarea haciendo referencia a la nueva
tag
- Actualice su servicio para hacer referencia a la nueva definición de tarea
- ¡Cuidado aquí! Si se ha
minimum healthy
configurado 0%
como sugieren algunas otras respuestas, le está dando a AWS plena autoridad para eliminar todo su servicio a fin de implementar la nueva definición de tarea. Si prefiere una implementación gradual / gradual, establezca su mínimo en algo >0%
.
- Como alternativa, establecer su
minimum healthy
a 100%
y su maximum healthy
algo >100%
para permitir su servicio para desplegar las nuevas tareas antes de matar a los viejos (minimizar el impacto en los usuarios).
A partir de este punto, su servicio reconocerá automáticamente que ha especificado una nueva tarea y trabajará en implementarla en función de los umbrales minimum
/ maximum
saludables que haya configurado.