0

사용 사례는 개발자가 코드를 약간 변경하고 다음 작업이 자동으로 수행되도록합니다. 빌드 실행, 애플리케이션 아티팩트 생성, 이슈와 함께 생성 된 도커 이미지, 이미지가 Docker 레지스트리에 푸시 됨, AWS ECS 작업 및 ECS 서비스가 업데이트되었습니다.AWS ECS - 컨테이너를 배포하는 방법

위의 AWS ECS 서비스 업데이트 자동화를 구현하는 방법을 알고 싶습니다. 지금까지 Jenkins 빌드에서 AWS ECS 업데이트를 구현했습니다. -
1> Jenkins의 빌드 게시 빌드 AWS CLi 스크립트를 사용하여 ECS
2> 빌드 후 작업 또는 AWS Lambda 기능을 호출하는 파이프 라인 단계를 업데이트합니다. 나는 그것을 구현하기 위해 자바에서 하나의 람다 함수를 만들었다.

우리가 위와 같은 다른 방법으로 해결할 수있게 해주십시오. 감사.

+0

방금 ​​서비스를 업데이트 하시겠습니까? 그렇다면 : http://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html – Snarf

답변

1

CircleCI에서 AWS ECS로 지속적으로 Docker 컨테이너를 배포하고 있습니다.

다음과 같이 배포 흐름의 개요는 다음과 같습니다

  1. 빌드 및 ecs-deploy으로 이미지를 ECS의
  2. 업데이트 작업 정의와 서비스를 AWS ECR에 새 부두 노동자의 이미지를
  3. 로그인 태그를 밀어

ecs-deploy은 ECS의 Docker 이미지를 업데이트하는 유용한 스크립트입니다.

https://github.com/silinternational/ecs-deploy

0

내가 처음 출시 된 이래로 많은 CI/CD 도구가 있지만 CI/CD 파이프 라인 대신 작은 스크립트를 작성하기로 결정했습니다. 여기

이있는 한 번의 클릭으로 내가 ECS고정 표시기 이미지의 롤링 배포를 달성하기 위해 종속성으로 ecs-deploy script를 사용하여 작성 스크립트를 배포합니다.

dev 또는 빌드/배포 상자에서 로컬로 실행하거나 젠킨스 또는 일부 로컬 빌드 도구를 사용할 수 있습니다.

#!/bin/bash 

# automatically login to AWS 
eval $(aws ecr get-login) 

# build local docker image and push repo to AWS 
docker build -t <yourlocaldockerimagetag> . 
docker tag <yourlocaldockerimagetag>:latest <yourECSRepoURL>:latest 
docker -D -l debug push <yourECSRepoURL>:latest 

# deploy to ECS 
ecs-deploy/ecs-deploy -m 50 -k <access-key> -s <secret-key> -r <aws-region> -c <cluster-name> -n <service-name> -i <yourECSRepoURL>:latest 

매개 변수 :

  • 클러스터 이름 : ECS의 클러스터 이름
  • 서비스 이름 : 귀하의 서비스 이름은 ECS
  • yourECSRepoURL에서 생성했다 : ECS 저장소 URL
  • yourlocaldockerimagetag : 모든 지역 이미지 태그 이름
  • 액세스 키 :
  • 비밀 키 배포
  • 에 대한 AWS 액세스 키 : 당신의 AWS는 비밀 키

이 이전 ecs-deploy를 설치해야합니다 스크립트.

-m 50은 노드 수가 50 %로 떨어지더라도 배포 할 수 있다고 알려줍니다. 이상적으로는 배포를 수행 할 노드가 추가로 필요하지만 이러한 설정을 할 여유가 없으면 배포가 계속 진행될 수 있습니다.

또한 ELB (로드 밸런서)를 사용하는 경우 대상 그룹의 기본 등록 취소 지연은 5 분이 약간 과도합니다. 등록 취소 지연은 ECS가 SIGTERM 또는 SIGINT를 도커 컨테이너로 보내기 전에 기존 요청이 완료 될 때까지 대기하는 시간입니다. EC2 대시 보드의 Target Groups (대상 그룹)로 이동하여 Edit Attributes (속성 편집)를 클릭하여 편집해야합니다. 그렇지 않으면 배포에 오래 걸릴 수 있습니다.