본문 바로가기

AWS

[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #5 - CodeBuild 생성 및 빌드, Fargate 배포

반응형

 

1. CodeBuild 생성

 

프로젝트 이름, 소스 등을 설정

 

어떤 환경에서 빌드를 할 것인지 설정

 

추가 구성 클릭 후 추가 구성하기

 

제한 시간, VPC 설정, 서브넷 설정, 보안 그룹 설정 등을 할 수 있으며

환경 변수를 buildspec.yml 에서뿐만 아니라 웹 콘솔에서도 가능하다. AccountID는 웹콘솔에 지정해보았음

 

Buildspec.yml 파일이 어디 있는지,

Artifact는 어느 S3의 버킷에 저장되는지 등을 설정할 수 있다.

 

CodeBuild가 지니고 있는 IAM Role에 권한 추가

- CloudWatch Logs 관련 권한
- SecretManager 관련 권한
- ECR 관련 권한

 

2. Build 수행

빌드 시작을 누르면 빌드를 수행할 수 있다.

 

빌드 로그 또한 실시간으로 확인할 수 있다.

 

S3에 아티팩트가 저장된 모습

 

변수값들이 taskdef.json 파일에 잘 치환되어 들어간 모습을 확인할 수 있다.

 

 

ECR에도 이미지가 저장되어 있음을 확인할 수 있다.

 

3. 작업 정의 생성

아티팩트로 받은 taskdef.json으로 작업 정의를 생성해주었다.

 

4. ECS Fargate Blue - Green 서비스 생성

시작 유형 : FARGATE

작업 정의 : 기 생성한 작업 정의 선택 (필자는 이전에 실습으로 인하여 7 버전으로 나오지만, 처음 생성하였을 경우 1 버전으로 나올 것임)

서비스 이름 : 기입

작업 개수 : 본인이 원하는 컨테이너 대수 설정, 본인은 2개로 설정하였음

배포 유형 : Blue Green으로 설정하며, 블루 그린으로 배포하기 위해서는 코드디플로이 기반으로 수행해야 한다.

배포 구성 : 한번에 Blue → Green 으로 트래픽을 전환하기 위하여 Default인 ECSAllAtOnce로 설정

서비스 역할 : 서비스가 AWS 계정 서비스에서 작업을 수행하기 위한 IAM 역할이며, ECS 전용 코드디플로이 역할이 필요하다. AWS 관리형 정책인 AWSCodeDeployRoleForECS 권한으로 Role을 생성한 뒤 아래의 서비스 역할에 붙여주면 된다.

 

네트워크 구성

클러스터 VPC 및 서브넷, 보안 그룹은 기 생성해둔 네트워크로 기입해준다.

보안 그룹의 경우 Demo 애플리케이션이 8080 포트를 ALB로부터 허용해주기만 하면 된다.

서브넷은 Private Subnet으로 할당해주었으니 자동 할당 퍼블릭 IP는 필요 없다.

 

로드 밸런서 설정

Blue - Green 배포이기 때문에 타겟 그룹을 2개 미리 생성해두어야 하며,

 

이상하게 대상 그룹 A, B 중 A만 보여서 이 부분은 임시 대상 그룹 B를 생성한 뒤 CodeDeploy 설정 부분에서 기존에 생성해준 B 타겟그룹으로 교체할 예정이다.

 

테스트 환경은 구축하지 않았기 때문에 테스트 리스너는 설정하지 않았다.

오토스케일링

별도로 설정하지 않았다.

 

그 후 서비스를 생성

RUNNING 상태로 변경

 

접속 잘 되고 있음을 확인.

 

다음은 v2를 v3로 변경 후 Git으로 Push하면 CI/CD 파이프라인이 구현될 수 있도록 설정해 볼 예정이다.

 

 

반응형