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

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

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

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

이번 게시글에서는 지난 게시글에 이어AWS EC2 설정, AWS VPC/서브넷 설정까지 설명을 드리고자 합니다.

** 앞서 설정하지 않았던 부분들이 있다면 이전 게시글을 참고하시기 바랍니다.

AWS EC2 설정

AWS 콘솔 로그인 > 상단 검색창에 EC2 검색 > EC2 클릭

EC2 콘솔에서 화면 가운데쯤에 있는 인스턴스 시작을 클릭합니다.

인스턴스 이름을 지정해주고 ubuntu를 클릭하고 난 뒤 아래쪽에 있는 Amazon Machine Image(AMI)에서 Ubuntu Server 20.04 LTS (HVM), SSD Volume Type을 선택해줍니다.

[참고] 해당 버전이 없다면 프리 티어 사용 가능 중 최신 버전이 아닌 것으로 선택을 하시면 됩니다.

EC2 키페어 설정

이렇게 선택하신 후 스크롤을 밑으로 내리게 되면, 키 페어(로그인)이라는 항목이 나오게 되는데 여기서 새 키페어 생성을 클릭하고 창이 뜨면 키페어 이름을 입력 > 키 페어 유형 RSA 선택 > 프라이빗 키 파일 형식 .pem을 선택하고 키페어 생성을 클릭하게 되면 .pem 파일이 다운로드가 되어지는데 이 파일은 로컬에서 SSH를 연결할 때 사용됩니다.

EC2 네트워크 설정

위와 같이 키페어를 생성하였다면 키 페어 항목에서 조금 더 내려보면 네트워크 설정 항목이 나오게 되는데, 여기서 보안그룹 생성 선택 > Allow SSH traffic from 선택 > 위치 무관 선택을 해줍니다.

이렇게까지 다 설정하셨다면 인스턴스 시작을 클릭합니다.

EC2 보안그룹

위의 단계까지 마치셨다면 인스턴스 목록으로 이동하게 되어질텐데 여기서 해당 인스턴스를 클릭 > 보안 > 보안그룹 선택을 해줍니다.

여기서 인바운드 규칙 > 인바운드 규칙 편집을 클릭하여 접근하여 줍니다.

HTTP > 0.0.0.0/0
HTTPS > 0.0.0.0/0
사용자 지정 TCP > 8080 > 0.0.0.0/0

위의 규칙을 아래의 이미지와 같이 추가해줍니다. 추가하고 난 뒤 규칙 저장을 클릭합니다.

이렇게 설정하고 난 뒤에 추가 설정을 위해 인스턴스 목록으로 이동하여 줍니다.

EC2 탄력적 IP 설정

EC2 콘솔 패널에서 좌측 사이드바에 있는 탄력적 IP를 선택 > 탄력적 IP 주소 할당을 클릭하여 탄력적 IP를 하나 생성해준다.

이렇게 했다면 방금 할당 받은 탄력적 IP를 선택하고 우측 상단에 있는 작업 > 탄력적 IP 주소 연결을 클릭합니다.

여기서는 아까 생성했던 EC2 인스턴스와 프라이빗 IP를 선택하여 연결해줍니다. 프라이빗 IP는 선택한 인스턴스의 IP이니 선택하여 연결 버튼을 클릭합니다.

AWS EC2 CodeDeploy Agent 설치

우선 CodeDeploy Agent 설치를 하기 위해서는 EC2 Shell에 접근해야합니다.

접근하는 방법은 다음과 같습니다.

  1. AWS EC2 콘솔에 접근한다.
  2. 좌측 사이드 바에 있는 인스턴스 > 인스턴스에 접근한다.
  3. 접근하고자하는 인스턴스를 선택한다.
    EC2 인스턴스 접근
  4. 우측 상단에 있는 연결을 클릭한다.
  5. EC2 인스턴스에 연결 > EC2 인스턴스 연결 > EC2 Instance Connect을 이용하여 연결 > 우측하단 연결버튼 클릭한다.

이렇게 접근하면 아래의 쉘이 나오게 되는데 여기서 이미지 아래의 있는 명령어를 차례대로 입력해줍니다.

sudo apt update
sudo apt install ruby-full
sudo apt install wget
cd /home/ubuntu
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto > /tmp/logfile

[주의] sudo apt install ruby-full : 해당 명령어 입력 후 y/n 선택 여부가 나오는데 여기서 소문자 y를 입력해야 함.

[참조] The package codedeploy-agent needs to be reinstalled, but I can’t find an archive for it. 해당 오류 발생시 EC2 인스턴스 생성부터 다시 하고 시작하는게 제일 빠른 오류 해결 방법임.

정상 실행 확인 방법

아래의 명령어를 입력해봅니다.

sudo service codedeploy-agent status

해당 명령어를 입력하고 난 후에 아래의 이미지처럼 출력이 되어진다면 정상 실행 중인 상태입니다.

AWS EC2 자바 설치

해당 명령어를 차례대로 입력한다.

sudo apt update
sudo apt install openjdk-17-jdk

[주의] sudo apt install openjdk-17-jdk : 해당 명령어 입력 후 y/n 선택 여부가 나오는데 여기서 소문자 y를 입력해야 함.

AWS EC2 IAM 역할 연결

다시 EC2 인스턴스 패널로 이동합니다.

  1. 인스턴스 > 인스턴스
  2. 해당 인스턴스 선택합니다
  3. 우측 상단에 작업 > 보안 > IAM 역할 수정을 클릭합니다.
  4. IAM 역할에서 이전 게시글에서 만들었던 Role_S3Access IAM 역할을 선택합니다.
  5. 우측 하단에 IAM 역할 업데이트를 클릭합니다.

** 만약, 역할이 없다면 이전게시글을 참고하시기바랍니다.
[AWS CI/CD 구축 (1)] CI/CD 설명 및 IAM계정 설정, 역할 생성

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