ECS Rolling Update

Hoju·2022년 8월 25일
0
post-custom-banner

Instance Type 설명

Service 2개를 생성하고 싶은데 각 서비스를 할당할 Cluster가 하나씩 존재해야한다. 즉, Cluster에 인스턴스 2개를 할당하면 서비스 2개가 할당이 된다. 그러나 인스턴스가 1개이면 Service를 2개 생성한다해도 한 개밖에 생성이 되지 않는다.

그럼 잘 생각해보자. Codedeploy로 배포할 때 새로운 버전에 Service가 생성되면서 4개 였다가 새로운 버전만 남고 전 버전은 삭제된다. 근데 그럼 서비스가 어느 시간때에 4개가 실행되어야한다. 즉, ECS Cluster에 Instance도 4개여야한다는 뜻이다. 중요!!!

Fargate 유형과 EC2 Instance Type에 차이점은 또 있다. 어떤 차이점이냐? Fargate 같은 경우는 Container를 실행할 때 필요한 CPU와 Memory를 지정해야합니다. 그러나 EC2 Type은 인스턴스가 실행되고 그 안에 Container를 실행하는 것 이기 떄문에 따로 지정 안해줘도 됨!!

매우 중요한 부분이다!!! 꼭 작업 정의를 생성할 때에는 호스트 포트는 0으로 매핑하도록 한다! 이유는? 이제 동적으로 포트를 매핑하는 것이기때문에 CI/ CD를 통해서 다시 배포하더라도 동적으로 포트를 매핑하도록 ECS 서비스는 적용한다.
동적 매핑 포트는 (49153~65535 및 32768~61000)이기 때문에 해당 ECS Service SG에도 이것을 고려해서 인바운드를 열어주어야한다.
따로 솔루션은 정리하지 않겠다. 왜냐? Fargate 유형이 많이 사용되기도 하고 둘이 생성과정은 차이점이 크지 않기 때문이다. 즉, 생성 부분에서 유형 차이이고 Instance Type 지정 등에 차이밖에 없어서 정리하는 시간은 불필요하다고 느껴졌다.


Task Definition Create

  1. 먼저 ECS 콘솔로 접근 후 작업 정의 부분을 선택합니다. 우측에 새 작업 정의 생성을 선택합니다.
  2. Fargate 시작 유형을 선택합니다. 다음 단계
  3. 작업 정의 이름을 입력한 후 테스크 역할을 선택합니다. 테스크 역할에 부여한 정책은 다음과 같습니다.

  4. 작업 실행 IAM 역할은 새역할 생성으로 선택한 후 넘어갑니다. 그럼 나중에 AWS 서비스에서는 ecsTaskExecutionRole을 생성해서 자동으로 연결해줍니다.
  5. 작업 크기를 설정합니다. memory: 1024(MiB) → 1GB, CPU: 0.5 vCPU → 512 CPU
  6. 컨테이너 추가를 선택한 후 아래와 같이 입력합니다. (전 단계에서 생성해준 ECR Image를 입력해야합니다.) 입력이 다 되면 선수는 추가를 선택합니다.
  7. 컨테이너를 확인합니다.
  8. 생성을 합니다.

ECS Cluster Create

  1. 이제 ECS 클러스터 부분에서 클러스터 생성을 선택합니다.
  2. 클러스터 템플릿은 네트워킹 전용을 선택합니다. 다음 단계
  3. 클러스터 이름을 입력 후 생성을 선택합니다.

만약 사용자가 container insights 활성화하고 싶다면 하시면 됩니다! container insights는 사용해 컨테이너화된 애플리케이션 및 마이크로서비스의 지표 및 로그를 수집하고 집계하며 요약할 수 있습니다

ECS Service Create

  1. 생성된 클러스터 부분에서 서비스 → 생성을 누릅니다.
  2. 시작 유형은 FARGATE를 선택합니다.
  3. 작업 정의, 클러스터 설정을 확인한 후 서비스 이름을 입력합니다.
  4. 작업 개수는 2개를 설정합니다.
  5. 배포부분에서 배포 유형은 롤링 업데이트를 선택합니다. 다음 단계
  6. VPC를 선택합니다. 그런 다음 Private 영역에 Subnet을 선택하도록 합니다.
  7. 보안 그룹은 8080 Port가 열려 있도록 구성합니다.
  8. 로드 벨런싱 부분에서 Application Load Balancer를 선택합니다.
  9. 로드 벨런싱 부분에서 Application Load Balancer를 선택합니다.
  10. 로드 벨런서 이름을 확인한 후 로드벨런서에 추가를 선택합니다.

    10 .프로덕션 리스너 포트 부분에서 80:HTTP를 선택합니다. 이것은 ALB에 기존 리스너를 말합니다. 그런다음 생성해둔 대상그룹을 선택하도록 합니다.
  11. 다음 단계 → 다음 단계 → 서비스 생성을 합니다.
  12. 이제 작업 부분에서 서비스에서 생성되는 Task에 상태가 Running이 될 때까지 기다립니다.
  13. 그리고 꼭 ALB Target그룹에서 Container에 상태를 확인합니다. 즉, Healthy를 확인합니다.
profile
Devops가 되고 싶은 청소년
post-custom-banner

0개의 댓글