나는 이것이 오래된 스레드라는 것을 알고 있지만 해결책은 여기의 대부분의 대답보다 훨씬 쉽습니다.
실행중인 컨테이너를 두 단계로 업데이트하는 방법 :
아래는 컨테이너가 태그 된 컨테이너 latest
(또는 전체 컨테이너 업데이트를 변경하지 않는 다른 정적 태그)를 참조하는 작업을 실행하는 서비스가 있다고 가정합니다 .
- 새 컨테이너를 저장소에 업로드
- 작업을 수동으로 종료
목표가 우리가 야생에 새로운 빌드를 제공하는 것이라면, 우리는 실제로 그것을 위해 우리의 서비스에 의존 할 필요가 없습니다 (그리고 나는 그것에 의존 해서는 안된다고 주장 합니다). 작업을 종료하면 서비스에서 Desired Count
실행중인 작업 이 없음을 인식 하고 새 작업을 시작합니다. 동일한 태그를 기준으로 컨테이너가 다시 당겨집니다.
ECS 서비스는 CD / CI 파이프 라인을 대체 하지 않고 HA 보안 네트워크 입니다.
보너스 : 목표가 태그에 관계없이 새 컨테이너가 푸시되었다는 것을 서비스에 알리는 것이 목표 인 경우 그 의미를 고려해야합니다. 배포 파이프 라인을 제어하는 기본 서비스를 원하십니까? 아마 아닐 것입니다. 이상적으로는 릴리스 버전 등을 기반으로 다른 태그로 컨테이너를 푸시합니다. 이 경우 배포의 장벽은 서비스에 새로운 무언가를 통보해야한다는 것입니다. 다시 말해서 서비스의 안전망이자 그 이상은 아닙니다.
세 단계로 새 태그를 배포하는 방법 :
- 새로운
container:tag
저장소에 업로드
- 새로운 것을 참조하는 새로운 작업 정의를 만듭니다
tag
- 새 작업 정의를 참조하도록 서비스를 업데이트하십시오.
- 조심해! 다른 답변에서 제안한대로
minimum healthy
설정 한 경우 0%
새 작업 정의를 배포하기 위해 전체 서비스를 종료 할 수있는 전체 권한을 AWS에 부여합니다. 롤링 / 점진적 배포를 선호하는 경우 최소값을 무언가로 설정하십시오 >0%
.
- 또는 이전 작업을 종료하기 전에 서비스에서 새 작업 을 배포 할 수 있도록
minimum healthy
to 100%
와 your maximum healthy
를 설정하십시오 (사용자에게 미치는 영향 최소화).>100%
이 시점에서 서비스는 사용자가 새 작업을 지정했음을 자동으로 인식하고 구성한 minimum
/ maximum
정상 임계 값을 기반으로 해당 작업을 배포 합니다.