[ AWS ] 누구나 쉽게 따라할 수 있는 CI/CD 구축하여 프로젝트 배포 자동화하기 #1

해당 게시글의 코드 내용은 아래의 링크에서 보실 수 있습니다.

Git Repository : https://github.com/seungm2n/opendata

안녕하세요, 오늘은 AWS을 통 CI/CD 구축하는 방법에 대해서 글을 작성하려고 합니다.
SPRING BOOT/JAVA/GRADLE을 Github Actions으로 AWS에서 제공하는 EC2와 S3, CodeDeploy를 통하여 구축하는 방법에 대해서 설명하려고합니다.

AWS CI/CD 구축할 때, 이용한 것들

  • Github Actions
  • AWS EC2
  • AWS S3
  • AWS CodeDeploy
  • AWS RDS
  • SPRING BOOT
  • JAVA
  • GRADLE

또한, 들어가기에 앞서 드리고자하는 말씀이 있습니다.

구축 전 주의사항

배포는 쉽다면 쉽지만, 기본적으로 세팅해야되는 정보들이 많고 여기를 갔다가 저기를 갔다가 하면서 해야하는 것들이 많기 때문에 조금 복잡하여 어렵습니다.

그리고 작업을 완성하기 위한 Shell 스크립트 작성빌드 구성을 위한 .yml파일 설정들도 있어 왠만하면 해당 게시글에서 하는 네이밍을 따라하시는 걸 추천드리며, 그 후에 어디서 어떻게 작동되고 어디로 흘러가서 어떤 작업을 하는지에 대해 알게 되면 그 때 네이밍을 자유로이 하시는 것을 추천드립니다. 감사합니다.


먼저 클라이언트 파이프라인 구성도입니다.

클라이언트 파이프라인

클라이언트 파이프라인은 다음과 같습니다.

JAVA-SRPING BOOT-EC2-S3-CodeDeploy-Github Action

CI/CD 흐름

  1. Github에서 코드를 push를 하게 되면 Github Action이 자동으로 실행되어지며, CI(빌드)작업을 하게 됩니다.
  2. 코드에 문제가 없다면 CI(빌드)작업을 통하여 .jar파일이 생성되어지며 사전에 작성한 배포 스크립트 파일과 함께 AWS의 S3에게 전달하여 저장되어집니다.
  3. 여기서 S3에 정상적으로 저장이 되었다면 EC2에 설치한 CodeDeploy Agent가 S3에 저장되어진 프로젝트를 가져와 내려받습니다.
  4. 그 후에 배포 스크립트 파일을 읽어 들여 프로젝트를 실행합니다.

** 이제부터 본론으로 들어가기 시작할건데, 생각보다 헷갈리는 부분들이 많으니 천천히 정독하시면서 따라하시길 바랍니다.

AWS IAM 설정

AWS는 기본적으로 외부 서비스의 접근을 허용하지 않습니다. 따라서, IAM(Identify & Access Management)계정을 사용하여 접근 권한을 획득해야 합니다.

AWS IAM 설정

사용자 > 사용자 생성을 클릭합니다.

IAM-사용자-사용자생성

사용자 이름을 입력하고 다음을 클릭합니다.

IAM-사용자세부정보지정

직접 정책 연결을 클릭하고 권한 정책에서 아래의 두가지를 추가해줍니다.

1. AWSCodeDeployFullAccess
2. AmazonS3FullAccess
IAM 권한추가

추가하고 난 후 다음 버튼을 클릭합니다.

AWS 키페어 발급

보안 자격 증명 > 액세스 키 만들기를 클릭합니다.

여기서 기타를 클릭하고 다음을 클릭한다.

설명태그를 입력하고 액세스 키 만들기를 클릭합니다.

이 후에 액세스 키와 비밀 액세스 키 두 가지가 나오게 되는데 이 키는 한번 분실하면 재발급을 받아 또 바꿔주어야 하니 둘다 복사하여 잘 보관해두어야합니다.

저는 두 키를 복사하여 메모장에 작성해두었습니다.

Github에 키페어 입력하기

배포하려는 프로젝트의 레포지토리로 이동합니다.
이동한 후 아래의 이미지대로 접근합니다.

[참고] Git Repository -> Settings -> Secrets and variables -> Actions -> New repository secret

New repository secert을 클릭하면 다음과 같이 창이 변하게 되는데 여기서 Name은 ‘CICD_ACCESS_KEY’를 입력하고 AWS에서 발급받은 첫번째 액세스 키(Access Key)를 추가합니다.

New repository secert을 다시 클릭하여 이번에는 Name에 ‘CICD_SECRET_KEY’를 입력하고 AWS에서 발급받은 두번째 액세스 키(Secret Key)를 추가합니다.

[확인]

다음과 같이 추가가 되어져있어야 합니다.

IAM 역할 생성 – EC2

IAM 콘솔로 접근 > 역할 > 역할 생성을 클릭합니다.

AWS 서비스를 선택하고 검색창에 사용사례 검색창에 EC2를 검색하여 EC2를 선택합니다. 그리고 난 후 하단에 다음 버튼을 클릭합니다.

다음을 클릭한 후에 여기서 AmazonS3FullAccess를 입력하고 권한을 추가해줍니다.

다음을 클릭한 후 역할 이름을 입력해줍니다.

그리고 난 후 하단의 역할 생성을 클릭합니다.

IAM 역할 생성 – CodeDeploy

방법은 위와 동일하지만, 권한이 다릅니다.

IAM 콘솔로 접근 > 역할 > 역할 생성을 클릭합니다.

AWS 서비스를 선택하고 검색창에 사용사례 검색창에 CodeDeploy를 검색하여 CodeDeploy를 선택합니다. 그리고 난 후 하단에 다음 버튼을 클릭합니다.

다음을 클릭한 후에 여기서 AWSCodeDeployRole를 입력하고 권한을 추가해줍니다.

다음을 클릭한 후 역할 이름을 입력해줍니다.

그리고 난 후 하단의 역할 생성을 클릭합니다.

다음 게시글에서는 AWS EC2 설정 관련해서 글을 작성하도록 하겠습니다.