Github Actions와 AWS Codedeploy를 이용해서 CI/CD를 구축해보았다.
Travis CI, Jenkins등은 사용해보지 않았지만 Github actions로 시작해보는 것도 괜찮은 것 같다.
자동배포라고하면, 구축하는 것 자체에 시간이 너무 뺏길것 같고, 구현하기 바빠서 미뤘었는데 처음 한번만 제대로 해놓으면 그 다음부터는 작은 부분들만 수정해서 바로 적용할 수 있기때문에 처음에 시간을 들여서라도 한번 해보는게 좋은 것 같다고 느꼈다!
이번 포스팅에서는 Github Actions와 Codedeploy사용을 위한 세팅(AWS S3, EC2, Codedeploy등)을 진행한다.
AWS EC2 환경은 Ubuntu 20.04이다.
1. S3 버킷 생성
Github Actions에서 EC2에 배포할 파일을 압축하여 S3에 저장하고, Codedeploy는 S3에 저장된 파일을 EC2로 배포한다.
이 때 배포파일을 저장할 버킷을 생성해주자!
버킷 이름을 중복없이 설정해주고, 나머지는 기본옵션으로 생성해준다.
2. EC2에 codedeploy-agent 설치
EC2에 접속해서 아래 명령어를 입력해주면 codedeploy-agent가 설치된다.
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 # ap-northeast-2 기준
chmod +x ./install
sudo ./install auto > /tmp/logfile
# codedeploy-agent가 실행중인지 확인
sudo service codedeploy-agent status
status가 위 이미지처럼 active(running)이 뜬다면 성공적으로 설치되어 동작하고 있다는 뜻이다.
3. IAM 역할 설정
EC2에서 S3와 Codedeploy를 이용할 수 있는 권한이 필요하다!
- AWSCodeDeployFullAccess
- AmazonS3FullAccess
두가지 정책을 가지는 역할을 생성해주자
위에서 만들었던 IAM 역할을 EC2에 적용해준다.
4. Codedeploy 설정
4-1. IAM 생성
AWSCodedeployRole 정책을 추가해주자
적절한 역할 이름을 설정해주면 된다.
4-2. Codedeploy 애플리케이션 생성
4-3. 배포 그룹 생성
배포를 진행하기 위해서는 배포그룹을 생성해주어야한다.
만약 환경별로 배포를 진행하고 싶다면 배포 그룹을 dev, prod 등으로 나누어 생성해줄 수 있다. (자세한건 추후 다룰 예정)
서비스 역할에, 아까 만들었던 Codedeploy 역할을 추가해준다.
- 현재 위치 선택
- Amazon EC2 인스턴스 선택 - 키에 Name을 입력하고 값에 배포할 EC2 인스턴스의 이름을 적어준다. (EC2 콘솔에서 확인가능)
일치하는 인스턴스가 1개 이상 표시되면 배포할 EC2가 선택된것이다.
로드 밸런서를 비활성화 해주고 배포 그룹을 생성해준다.
5. IAM 사용자 생성
Github actions가 S3에 파일을 업로드하고, Codedeploy를 이용하여 배포할 수 있도록 권한을 주어야한다.
이전에 EC2, Codedeploy에 연결한 것은 역할이고, 이번에는 사용자를 생성해줄것이다.
사용자 이름을 설정해주고, 엑세스 키 방식을 선택해준다.
아까 생성해준 ec2의 역할과 마찬가지로
- AWSCodeDeployFullAccess
- AmazonS3FullAccess
2가지 정책을 연결해준다.
엑세스 키 ID, 비밀 엑세스 키는 잃어버리지 않도록 다운로드 해준다.
6. Github repository에 secret 변수 추가해주기
이후 워크플로우에서 AWS 연동을 위해 방금 생성한 Access Key ID, Secret Access Key를 변수로 추가해준다.
Repository - Settings - Secrets - Actions
[New repository secret] -> Access key id, Secret access key를 추가해준다
7. EC2에서 AWS 로그인
세팅 마지막 단계이다!! 💪
EC2에 접속한다.
# 설치
$ sudo apt update
$ sudo apt install awscli
# 설치 확인
$ aws help
# 사용자 설정
$ aws configure
AWS Access Key ID [None]: 액세스 키 입력
AWS Secret Access Key [None]: 시크릿 액세스 키 입력
Default region name [None]: ap-northeast-2 # 본인 리전에 맞춰서 입력
Default output format [None]: Enter 입력
여기까지 AWS EC2, S3, Codedeploy, Github actions에 대한 설정은 끝이다!
다음 포스팅에서 Github actions 워크플로우 및 배포 스크립트를 작성해볼 것이다~! 😃
참고자료
'🚀 배포' 카테고리의 다른 글
[Nginx] proxy pass 설정하기 (0) | 2022.05.29 |
---|---|
[AWS][Codedeploy] missing credentials - please check if this instance was started with an iam instance profile (0) | 2022.05.02 |
[Nginx][EC2] 도메인 연결, https 적용, 서브도메인 설정 (4) | 2021.07.02 |