[AWS][CI/CD] AWS CodeDeploy, Github Actions 사용하여 CI/CD 구축하기

개발자·2024년 1월 24일
0

AWS

목록 보기
4/4

S3 생성하기

IAM 생성하기

1) EC2 IAM

S3와 Codedeploy를 이용할 수 있는 권한을 가진 role(역할)을 생성해야 한다.

  • AWSCodeDeployFullAccess
  • AmazonS3FullAccess

IAM > Access management > Roles > [Create role] 버튼 클릭

S3FullAccess, CodeDeployFullAccess 항목 체크
AmazonS3FullAccess ✅

AWSCodeDeployFullAccess ✅

IAM 이름 설정

[Create role] 버튼 클릭하여 완료

EC2 홈 > 인스턴스 선택 > [Actions] 토글 열기 > [Security] 토글 열기 > [Modify IAM role] 클릭

토글을 열어 앞서 생성한 IAM role 선택후, [Update IAM role] 버튼 클릭

2) CodeDeploy IAM

앞서 했던 것과 마찬가지로,
IAM > Roles > Create role로 들어가서 아래와 같이 설정

다른 설정은 만질 필요 없이, 이름설정 하는 부분에서 이름만 설정해주어 완료해줍니다.

CodeDeploy 생성하기

CodeDeploy 홈 > Deploy > Applications > [Create application] 클릭

CodeDeploy 이름 설정, Compute platform은 EC2/On-premises로 설정

application을 만들었으면, 이젠 deployment group을 만들어줍니다.
[Create deployment group] 버튼 클릭!

Deployment group name 설정.
(주로 배포 환경별로 dev, prod 이런식으로 짓는다고 한다.)
Service role도 클릭하여 토글을 열고 앞서 만들어준 CodeDeploy IAM role 선택

Deployment type 및 Environment configuration은 아래와 같이 설정 (Amazon EC2 는 생성한 EC2 선택)

나머지 설정은 그대로두고, Enable load balancing 항목 체크해제 후
[Create deployment group] 버튼 클릭하여 완료

IAM user 생성하기

이전에 생성한 IAM role(역할)을 수행할 IAM user(사용자)를 생성하는 과정

IAM > Users > Creat user 로 들어가서
User name을 설정한 뒤, [Next] 버튼 클릭

Attach policies directly를 클릭하고
Permissions policies에서
AWSCodeDeployFullAccess 와 AmazonS3FullAccess 정책 체크한 뒤
[Next] 버튼 클릭 > [Create User] 버튼 클릭

이제, GitHub Actions가 사용자로 인증하기 위해 사용할 액세스 키를 생성해야 한다.

생선된 유저를 클릭하여 나오는 info 창에서
우측에 있는 [Create access key] 버튼 클릭

Application running outside AWS 항목 체크 (우리는 github actions를 사용하므로)

access key에 대한 간단한 설명을 적고 [Create access key] 버튼 클릭

🚨 한 번 생성한 access key는 다운로드 기회가 단 한 번 뿐이다.
때문에 .csv 파일을 다운로드하고 해당 파일을 안전하게 보관하도록 한다.

GitHub Actions 가 CD 프로세스 내에서 앞서 만든 키를 사용해 인증하기 위해서는 GitHub Repository Secrets 에 키를 저장해야 한다.

Repository → Settings → Secrets and variables → Actions → New repository secret

EC2내에 CodeDeploy-Agent 설치

codedeploy-agent 설치 전, EC2 에는 npm, yarn 과 같은 패키지 매니저와 git, nvm, node 가 필수적으로 설치되어 있어야 한다.

awscli 설치

1) AWS EC2 접속
2) AWS CLI 설치

$ sudo apt update
$ sudo apt install awscli

3) AWS configure 인증 정보 입력
AWS IAM 사용자의 액세스 키와 비밀 액세스 키를 인증 정보에 입력하여 저장합니다.

$ sudo aws configure
AWS Access Key ID [None]: AWS_ACCESS_KEY_ID 입력!
AWS Secret Access Key [None]: AWS_SECRET_ACCESS_KEY 입력!
Default region name [None]: ap-northeast-2
Default output format [None]: json

codedeploy agent 설치(ubuntu server용)

$ sudo apt update (위에서 이미 했으니 생략 가능)
$ sudo apt install ruby-full
$ sudo apt install wget
$ cd /home/ubuntu
$ wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto > /tmp/logfile   (ubuntu 20.04인 경우에)
$ sudo ./install auto (ubuntu 20.04 가 아닌 경우)

서비스가 실행 중인지 확인하려면

$ sudo service codedeploy-agent status
CodeDeploy 에이전트가 설치되어 실행 중이면 "The AWS CodeDeploy agent is running"와 같은 메시지가 표시되어야 한다.
"error: No AWS CodeDeploy agent running"와 같은 메시지가 표시되면 서비스를 시작하고 다음 두 명령을 한 번에 하나씩 실행한다.
$ sudo service codedeploy-agent start
$ sudo service codedeploy-agent status

EC2인스턴스 부팅시 Codedeploy-agent 자동으로 재시작되도록 설정

$ sudo vim /etc/init.d/codedeploy-startup.sh
아래 항목 복붙후 저장

#!/bin
sudo service codedeploy-agent restart

$ sudo chmod +x /etc/init.d/codedeploy-startup.sh

0개의 댓글