본문 바로가기

개발

[CI/CD] (3) 설정 총정리

앞서 개념적인 흐름에 대해서는 살펴보았고, GitHub Actions와 AWS CodeDeploy를 통해 CI/CD 프로세스를 구축하기 위한 설정을 전체적으로 정리해보겠습니다.

 

이번 글을 통해 개념적으로 정리하고, 이어지는 글에서 직접 구축하는 과정을 자세히 정리하겠습니다. 

 

전체적으로 정리하면 위 그림과 같고, 여기에서 EC2 -> S3 -> CodeDeploy -> GitHut Actions 의 순서대로 하나하나 어떤 설정을 해주어야 하는지 살펴보겠습니다.

1. EC2

(0) EC2 생성

먼저 서비스를 배포할 EC2 인스턴스를 생성합니다. 

 

(1) IAM 역할 부여

EC2에 S3 저장소와 CodeDeploy를 이용할 것이기 때문에, 2개에 대한 권한을 가진 역할을 부여해야 합니다.

 

(2) JDK, CodeDeploy Agent 설치

ⓛ EC2 자체에 JDK가 없다면, 다른 설정을 다 해도 최종적으로 EC2에서 프로젝트를 빌드할 수 없으므로, 먼저 JDK를 설치해줍니다.

 

② CodeDeploy Agent

EC2 위에서 배포를 수행할 CodeDeploy Agent가 설치되어 있어야 CodeDeploy Application을 통한 배포가 가능합니다. 따라서 EC2를 설치할 때 함께 설치해줍니다. 

 

 

2. AWS S3

(1) S3 버킷 생성

S3 버킷을 생성해줍니다.

S3 자체에서 설정할 특이사항은 없습니다. 

 

(2) 접근 권한 - IAM 사용자 생성

추후에 GitHub에서 S3에 접근해야 하므로, IAM 사용자를 하나 생성해줍니다.

EC2때와 마찬가지로 S3와 더불어 CodeDeploy에 대한 FullAccess를 지는 IAM을 하나 생성해주면 됩니다.

(추후 GitHub Workflow에서 이용)

 

3. AWS CodeDeploy

(1) IAM 역할 부여 

이때에는 미리 정의된 AWS CodeDeploy Role을 부여해주면 됩니다. 

 

(2) 배포 그룹, 배포 방식 설정

AWS CodeDeploy Application에서 어떤 그룹에 어떤 방식으로 배포할 것인지 정의합니다.

그룹명을 설정하고 포함할 인스턴스를 선택하면 됩니다. 앞서 생성한 EC2 인스턴스를 선택하면 됩니다.

 

배포 방식은 이번 글에서는 자세히 다루진 않겠습니다. 무중단 배포나 로드 밸런싱 등과 관련되는데, 하나의 인스턴스에 중단 배포 방식을 이용하므로 크게 설정할 부분은 없습니다. (현재 위치 배포, 로드 밸런싱 비활성화)

 

4. GitHub

(1) appspec.yml, deploy.sh 작성

정확히는 깃허브 보다는 프로젝트 root 경로에 해당 파일을 추가해주어야 합니다. 

 

두 파일은 배포 시 CodeDeploy Agent가 수행할 파일이라고 생각하면 됩니다.

 

appspec.yml 파일 - 파일의 위치나, 배포 프로세스의 각 프로세스에서 수행할 스크립트 파일 명시

deploy.sh - 수행할 스크립트 파일(배포 명령어 포함)

 

(2) Workflow 작성

Push event가 발생하면 실행될 workflow를 작성해줍니다.

 

- 프로젝트 S3 업로드

- AWS CodeDeploy 배포 실행 명령어 호출

 

 

이제 개념적으로는 CD 파이프라인 구축에 대해 모두 살펴보았고, 다음 글을 통해 실제 구축하고 결과를 확인하여 CI/CD 구축을 마쳐보겠습니다.