Я знаю, що це стара тема, але рішення набагато простіше, ніж більшість відповідей тут.
Як оновити запущений контейнер у два етапи:
Нижче припущено, що у вас є служба, яка виконує завдання, яке посилається на тег контейнера latest
(або будь-який інший статичний тег, який не змінюється через оновлення контейнера).
- Завантажте новий контейнер у сховище
- Вбийте вручну свої завдання
Якщо мета полягає в тому, щоб ми отримали нове будівництво в дикій природі, нам не потрібно для цього покладатися на нашу послугу (і я заперечую, ми не повинні покладатися на неї). Якщо ви вб'єте своє завдання, сервіс визнає, що у нього немає йогоDesired Count
запущених завдань, і просто закрутить нове. Це призведе до повторного витягання контейнера на основі того ж тегу.
Служби ECS - це мережа безпеки HA, а не заміна вашого трубопроводу CD / CI.
Бонус: якщо ціль полягає в тому, щоб служба розпізнала, як новий контейнер був висунутий (незалежно від тегів), нам потрібно врахувати наслідки цього. Ми справді хочемо базової послуги, яка контролює наш трубопровід розгортання? Ймовірно, ні. В ідеалі ви будете натискати контейнери різними тегами (на основі версій випуску чи чогось іншого). У цьому випадку перешкодою для розгортання є те, що службу потрібно повідомити про щось нове - знову ж таки, це мережа безпеки для сервісу, і більше нічого.
Як розгорнути нові теги в три етапи:
- Завантажте нове
container:tag
у сховище
- Створіть нове визначення завдання з посиланням на нове
tag
- Оновіть службу, щоб посилатися на нове визначення завдання
- Обережно тут! Якщо ви
minimum healthy
налаштували так, 0%
як підказують деякі інші відповіді, ви надаєте AWS повноваження вбивати всю службу, щоб розгорнути нове визначення завдання. Якщо ви віддаєте перевагу прокатному / поступовому розгортанню, встановіть свій мінімум на щось>0%
.
- Крім того , встановіть
minimum healthy
для 100%
і ваших maximum healthy
до чого - то , >100%
щоб дозволити обслуговування розгорнути нові завдання перед вбивати старих (зведення до мінімуму несприятливих наслідків для користувачів).
З цього моменту ваша служба автоматично розпізнає вказану вами нову задачу та працюватиме над її розгортанням на основі налаштованих minimum
/ maximum
здорових порогів.