정보
1. 전체적인 흐름
2. CodeDepoly를 사용하는 이유
- CodeDeploy는 수많은 AWS EC2에 배포를 쉽게 할 수 있도록 해준다.
- CodeDeploy에 무중단 배포 기능이 내제되어 있어 쉽게 무중단 배포 진행 가능
- 이 외에도 다양한 장점이 존재함
https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/welcome.html
무엇입니까 CodeDeploy? - AWS CodeDeploy
또한 일반적으로 기존 환경의 인스턴스에서 실행되는 애플리케이션 수정이 있지만, 블루/그린 배포의 경우 반드시 이럴 필요는 없습니다.
docs.aws.amazon.com
3. 장점
- 서버가 여러 대이더라도 쉽게 자동 배포를 구축할 수 있음.
- 쉽게 무중단 배포를 적용시킬 수 있음.
4. 단점
- CodeDeploy를 사용함으로써 인프라 구조가 복잡해짐.
- 복잡해짐에 따라 관리 비용, 유지보수 비용, 난이도, 트러블 슈팅, 복잡도가 증가
5. 이 방법은 언제 주로 사용하는 지
- 서버를 여러 대 이상 구동해야 하거나 무중단 배포가 중요한 서비스일 때 주로 활용
실습
1. CodeDeploy 셋팅 / IAM 설정
1) Code Deploy 역할(Role) 생성하기
- Code Deploy가 다른 AWS Resource에 접근하려면 권한이 필요하다. 이 권한을 부여해주는 기능이 IAM의 역할(Role)이다.
2) CodeDeploy 생성하기
2-1) CodeDeploy 애플리케이션 생성
2-2) Code Deploy 배포 그룹 생성
3) EC2 역할(Role) 생성하기
- EC2가 빌드된 파일을 S3로 부터 다운받으려면 접근 권한이 필요함. 이 권한을 부여해주는 것이 IAM의 역할(Role)이다.
3-1) 정책 생성
3-2) 권한 지정
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
전체 구조
- Version: 정책의 버전을 나타냅니다. 여기서는 “2012-10-17” 버전을 사용하고 있습니다.
- Statement: 정책의 주요 내용을 담고 있는 배열입니다. 여러 개의 Statement를 포함할 수 있습니다.
Statement 내부
- Action: 허용할 작업을 정의합니다. 여기서는 s3:Get*와 s3:List* 작업을 허용하고 있습니다. 이는 Amazon S3에서 객체를 가져오거나 목록을 나열하는 모든 작업을 포함합니다.
- s3:Get*: S3 버킷에서 객체를 가져오는 모든 작업을 포함합니다. 예를 들어, s3:GetObject, s3:GetBucketLocation 등이 있습니다.
- s3:List*: S3 버킷의 객체 목록을 나열하는 모든 작업을 포함합니다. 예를 들어, s3:ListBucket, s3:ListObjects 등이 있습니다.
- Effect: 정책의 효과를 나타냅니다. 여기서는 "Allow"로 설정되어 있어, 지정된 작업을 허용함을 의미합니다.
- Resource: 정책이 적용되는 리소스를 정의합니다. 여기서는 "*"로 설정되어 있어, 모든 S3 리소스에 대해 적용됩니다12.
3-3) 정책 세부 설정
3-4) 역할 생성
3-5) EC2에 생성한 iam 역할 연결
Code Deploy Agent를 먼저 설치한 뒤에 EC2에 IAM 역할을 부여했따면 EC2에서 아래 명령어로 codedeploy-agent를 재시작 해야함.
$ sudo systemctl restart codedeploy-agent
4. Code Depoly Agent 설치하기
- Code Deploy Agent가 다른 AWS Resource에 접근 하려면 권한이 필요함. 이 권한을 부여해주는 기능이 IAM의 역할(Role)이다.
Ubuntu CodeDeploy 서버용 에이전트 설치 - AWS CodeDeploy
출력을 임시 로그 파일에 쓰는 것은 Ubuntu Server 20.04에서 install 스크립트를 사용하여 알려진 버그를 해결하는 동안 사용해야 하는 해결 방법입니다.
docs.aws.amazon.com
[Ubuntu 22.04. 기준]
sudo apt update && \
sudo apt install -y ruby-full 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
[Code Deploy Agent가 정상적으로 실행되고 있는 지 확인]
systemctl status codedeploy-agent
5. Github Actions가 CodeDeploy, S3에 접근할 수 있게 IAM 발급
5-1) IAM 사용자 생성
5-2) 직접 정책 연결
5-3) 보안 자격 증명에 들어가서 액세스 키 만들기
IAM > 사용자 > 보안 자격 증명
5-4) 액세스 키와 비밀 액세스 키 잘 보관해두기
6. Github Actions의 Secret Key에 저장해두기
7. 배포 전에 프로젝트 파일 저장할 S3 만들기
'기타' 카테고리의 다른 글
[오류] 배포 중 로DB 접근 관련 오류 (0) | 2024.09.11 |
---|---|
[CI/CD] 확장성을 고려한 CI/CD 구축 방법2 - 실습 (0) | 2024.08.05 |
[CI/CD] 일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (0) | 2024.08.04 |
[CI/CD] 개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (0) | 2024.07.29 |
[CI/CD] 백엔드 CI/CD에 필요한 AWS 지식2 (1) | 2024.07.27 |