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 파이프라인이 구현될 수 있도록 설정해 볼 예정이다.