본문 바로가기
AWS

[ECS] AWS ECS 세팅하기 - 2. 서비스 생성 - 롤링 업데이트

by yonikim 2021. 5. 17.
728x90

AWS Elastic Container Services(ECS) 에서 제공하는 배포 유형에는 '롤링 업데이트' 와 '블루/그린 배포' 가 있다. 그 중 롤링 업데이트로 배포하는 방법부터 먼저 포스팅하겠다.  

 

1. 작업정의 및 클러스터 생성하기

2. 서비스 생성하기 - 롤링 업데이트

3. 서비스 생성하기 - 블루/그린 배포

 


서비스 생성하기 - 롤링 업데이트 

~<😆>롤링<😆>롤린<😆>롤링<😆>~


 

롤링 업데이트를 사용하는 경우 새 서비스 배포가 시작되면 AWS ECS 서비스 스케쥴러가 현재 실행 중인 작업을 새작업으로 바꾼다. 즉, 새로운 작업이 띄워질 때까지 기다렸다가 현재 실행 중인 작업을 내리기 때문에 무중단 배포가 가능하다.

 

 

1. 클러스터 > [서비스] 탭 > [생성] 버튼 클릭

 

2. 서비스 구성

 

3. 네트워크 구성

* 로드 밸런싱의 경우 외부 포트가 필요한 경우 설정해 줘야 한다. 이는 추후에 포스팅할 예정...⭐️

 

4. Auto Scaling (선택사항)

 

5. 서비스 생성 완료

서비스 생성이 완료되면, 서비스와 작업이 생성된걸 확인할 수 있다. 

 


Bitbucket Pipeline 을 이용하여 AWS ECS에 배포하기

(Bitbucket Pipeline 을 이용하여 AWS ECR에 이미지 push하기 참고)


 

1. Bitbucket Pipeline 에 환경변수 추가하기

* 하나의 클러스터에 스테이징/프로덕션 별로 서비스를 띄워줄 것이기 때문에,

Repository variables 에는 클러스터명을 기재하고

Deployments 에는 서비스명을 기재

 

▷ bitbucket-pipeline.xml

pipelines:
  tags:
    staging-*:
      - step:
          name: Docker build and push to AWS ECR
          services:
            - docker
          image: atlassian/pipelines-awscli
          deployment: Staging
          script:
            - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ECR_REPOSITORY
            - IMAGE=$AWS_ECR_REPOSITORY/$AWS_ECR_REPOSITORY_NAME
            - TAG=$BITBUCKET_TAG
            - docker build -t $IMAGE:$TAG . 
              --build-arg ES_HOST=$ES_HOST 
              --build-arg ES_USER=$ES_USER 
              --build-arg ES_PASSWORD=$ES_PASSWORD 
            - docker push $IMAGE:$TAG
            - MANIFEST=$(aws ecr batch-get-image --region $AWS_REGION --repository-name $AWS_ECR_REPOSITORY_NAME --image-ids imageTag=$TAG --query 'images[].imageManifest' --output text)
            - aws ecr put-image 
              --region $AWS_REGION 
              --repository-name $AWS_ECR_REPOSITORY_NAME 
              --image-tag staging 
              --image-manifest "$MANIFEST"
            - aws ecs update-service --region $AWS_REGION --cluster $AWS_ECS_CLUSTER --service $AWS_ECS_SERVICE --platform-version 1.3.0 --force-new-deployment

 

 

2. Bitbucket 에 push 하기

$ git tag staging-0.0.1
$ git push origin staging-0.0.1

 

 

728x90