Wiem, że to stary wątek, ale rozwiązanie jest o wiele łatwiejsze niż większość odpowiedzi tutaj.
Jak zaktualizować działający kontener w dwóch krokach:
Poniżej założono, że masz usługę uruchamiającą zadanie, które odwołuje się do oznaczonego kontenera latest
(lub dowolnego innego statycznego tagu, który nie zmienia się między aktualizacjami kontenera).
- Prześlij swój nowy kontener do repozytorium
- Ręcznie zabij swoje zadania
Jeśli naszym celem jest udostępnienie nowej wersji w środowisku naturalnym, tak naprawdę nie musimy polegać na naszych usługach (i twierdzę, że nie powinniśmy na tym polegać). Jeśli zabijesz swoje zadanie, usługa rozpozna, że nie ma Desired Count
uruchomionych zadań, i po prostu uruchom nowe. Spowoduje to ponowne pobranie kontenera w oparciu o ten sam tag.
Usługi ECS są siecią bezpieczeństwa HA, a nie zamiennikiem twojego rurociągu CD / CI.
Premia: jeśli celem jest, aby usługa rozpoznała, że nowy kontener został wypchnięty (niezależnie od tagów), musimy rozważyć konsekwencje tego. Czy naprawdę chcemy dla nas podstawowej usługi kontrolującej nasz proces wdrażania? Prawdopodobnie nie. Idealnie, będziesz przepychać swoje kontenery różnymi tagami (w zależności od wersji lub czegoś podobnego). W tym przypadku barierą we wdrożeniu jest to, że usługa musi zostać powiadomiona o czymś nowym - znowu jest to sieć bezpieczeństwa dla usługi i nic więcej.
Jak wdrożyć nowe tagi w trzech krokach:
- Prześlij swój nowy
container:tag
do repozytorium
- Utwórz nową definicję zadania odwołującą się do nowej
tag
- Zaktualizuj usługę, aby odwoływała się do nowej definicji zadania
- Ostrożnie tutaj! Jeśli
minimum healthy
ustawiłeś 0%
tak, jak sugerują inne odpowiedzi, dajesz AWS pełne uprawnienia do zabicia całej usługi w celu wdrożenia nowej definicji zadania. Jeśli wolisz wdrażanie stopniowe / stopniowe, ustaw minimum na coś >0%
.
- Alternatywnie, ustaw
minimum healthy
się 100%
i swoje maximum healthy
do czegoś >100%
, aby umożliwić usługa wdrożyć nowe zadania przed zabijanie starych (minimalizacja wpływu na użytkowników).
Od tego momentu usługa automatycznie rozpozna, że określono nowe zadanie, i będzie pracować nad jego wdrożeniem na podstawie skonfigurowanych minimum
/ maximum
zdrowych progów.