Elastic beanstalk + Git Action 무 중단 배포 구현 - 1 (feat. S3)
정중한 지적은 언제나 환영합니다!
댓글로 편히 남겨주세요
오늘은 약 3일 간의 삽질(?)을 통해 얻은 내 경험과 이를 기반한 지식을 공유해보려 한다.
먼저 아래 서버, aws 스펙등을 공유 한다. vpc 환경은 필요 시 각자 만들기를 바란다.
서버 : express (node)
vpc : default
security group : custom (db, express 등의 포트는 뚫어주세요)
ec2 : t2micro (연습용)
rds : db.t4g.micro (연습용)
1편의 목차는 아래와 같습니다.
IAM Role 생성, EB 생성
- IAM으로 이동
- 역할 이동 후 역할 생성 선택
- AWS 서비스 > EC2 선택
- 권한 주기
- 역할 생성
- 정책 편집
- 애플리케이션 생성
- 이름 입력
- 플랫폼 선택
- 사전 설정
- 키 페어 등록
- VPC
- 인스턴스 설정
- 루트 볼륨 설정
- 보안그룹 설정
- 환경 유형 설정
- 헬스 체크
- 배포 정책
- 환경 속성 추가
등이 있다. 시작 해보자.
1. IAM 으로 이동
AWS 계정 우측 상단에 계정을 클릭 > 보안 자격 증명 클릭
2. 역할 이동 후 역할 생성 선택
왼쪽 사이드 바 "역할" 클릭 > 역할 생성 클릭
3. AWS 서비스 > EC2 선택
AWS 서비스 선택 > 사용 사례는 EC2 선택
4. 권한주기
권한 정책 선택
- AWSElasticBeanstalkEnhancedHealth
- AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
5. 역할 생성
적절한 이름 작성 후 생성 (A 역할)
6. 정책 편집
생성한 역할 선택 > 신뢰 관계 > 신뢰 정책 편집 > 아래와 같이 수정
이어서 하나의 역할을 더 만들어야 한다. 따라와 보자.
다시 1~3번 까지 수행해서 4번 권한주기에서 아래 권한 선택
- AWSElasticBeanstalkMulticontainerDocker
- AWSElasticBeanstalkWebTier
- AWSElasticBeanstalkWorkerTier
이 후 역할 생성까지 진행해준다. (6번 까지) (B 역할)
7. 애플리케이션 생성
여기서 부턴 Elastic Beanstalk 설정이다. 이어서 진행해보겠다.
Elastic Beanstalk 검색 > 애플리케이션 생성 클릭 > 이름 입력 후 생성
8. 이름 입력
이제는 환경 생성을 할 차례이다.
생성한 애플리케이션 클릭 > 새 환경 생성 클릭 > 환경 이름 작성
9. 플랫폼 선택
express 서버이니 node를 선택한다. spring이나 react등 다른 프레임워크를 사용한다면 이에 맞는 플랫폼을 선택한다.
10. 사전 설정
사전 설정 > [사용자 지정 구성] 선택
11. 키 페어 등록
기존 서비스 역할 : (A 역할)
키 페어 : EC2에 사용할 키 페어
EC2 인스턴스 프로파일 : (B 역할)
12. VPC
생성 혹은 디폴트 VPC 선택
13. 인스턴스 설정
1. 퍼블릭 IP 주소 활성화 (반드시)
2. 생성한 서브넷 중 퍼블릭 선택 혹은 디폴트 서브넷을 사용중일 시 디폴트 서브넷 선택
3. 데이터 베이스 또한 EC2와 동일한 방식으 서브넷 선택
14. 루트볼륨 설정
환경을 만들다 보면 경고가 하나 뜰 것 이다.
해석하면 2024년 10월 1일 자로 launch configuration을 허용하지 않는 다는 것. 이전 환경들은 해당 변경에 적용이 되지 않는다.
루트 볼륨을 설정해줘야 환경 생성 완료 후 에러가 안난다..!
필자는 루트 볼륨 유형 > 범용 3(SSD) 선택 해줬다.
15. 보안그룹 설정
생성한 보안 그룹을 선택한.
16. 환경 유형 설정
무 중단 배포를 구현할 것이기 때문에 밸런싱된 로드 선택
1 최솟값 / 2 최댓값 선택
이 후 인스턴스 유형에선 t3.small은 제외하자(비싸다)
ami는 기본을 권장한다.(여기에 이틀을 썼다! 회고는 마지막에)
17. 헬스 체크
프로세스 설정에서 본인이 헬스 체크 요청을 할 경로를 지정해준다.
필자는 /api/health 경로를 적어줬다.
18. 배포 정책
추가 배치를 사용한 롤링 선택 (롤링 배포)
19. 환경 속성 추가
DB 정보 혹은 추가 정보를 기입한다
이어서 2탄에 나머지 설정을 해보겠습니다