반응형
구축
Code Deploy의 배포 과정은 다음과 같다.
- 애플리케이션 최상단 경로에 AppSpec.yml 파일(배포에 필요한 절차 명세)을 추가한다.
- 특정 버전에 대한배포 요청이 들어오면, Code Deploy는 배포할 EC2 인스턴스에 설치된 Code Deploy Agent들과 통신하여 Agent들에게 요청 버전을 배포해달라고 요청한다.
- Agent들은 코드 저장소(여기에서는 jar파일이 저장된 S3)에서 프로젝트 전체를 서버에 내려받고, AppSpec.yml 파일의 절차대로 배포를 진행한다.
- Agent는 배포 후 성공/실패 여부를 알려준다.
3. Code Deploy를 활용한 자동 배포 루틴 만들기
(1) EC2 세팅
- 인바운드 규칙: ssh 접속은 현재 내 IP, HTTP, HTTPS 포트인 80, 443 포트 허용
- Java 설치: JDK 17 버전을 설치하였다.
- Code Deploy Agent 설치 레퍼런스를 참고하여 Code Deploy Agent를 설치한다(EC2는 Ubuntu를 사용하였다).
(2) EC2에 IAM 역할 부여
- EC2를 위한 IAM 역할을 생성하고, 정책에는 Amazon 3S FullAccess와 AWSCodeDeployFullAccess를 설정해 준다.
- 역할을 만들었다면 EC2 대시보드에서 앞서 만든 EC2에 만든 역할을 부여한다.
(3) Code Deploy를 위한 IAM 역할 생성: Code Deploy 실행 전에 만들어 두자
- Code Deploy를 위한 역할 생성하고, 정책에는 AWSCodeDeployRole을 부여한다.
(4) Code Deploy 생성 및 설정
- Code Deploy - 애플리케이션 - 애플리케이션 생성 에서 이름, 컴퓨팅 플랫폼(EC2)를 설정한다.
- 배포 그룹을 설정한다: 배포 그룹을 생성하여, 배포 그룹의 이름과 (3)에서 만든 IAM을 설정해 준다.
- 배포 방법에 현재 위치와 블루/그린이 있는데,
- 현재 구현은 한 EC2 서버 내에서 최소 단위 배포를 하므로 Code Deploy가 무중단 배포 역할을 하지는 않는다. → NginX가 한다.
- 따라서 현재 위치 배포 방식을 선택해 준다.
- 환경 구성은 EC2 인스턴스를 선택하고 만들어 두었던 EC2인스턴스의 태그를 입력해 준다.
- 배포 설정은 여러 서버에 배포할 때의 방식이지만 한 대에 배포하므로 CodeDeployDefault.AllAtOnce로 선택한다.
- 로드 밸런서는 사용하지 않았으므로 선택 해제
- AppSpec.yml에는 다음과 같이 설정해 준다.
# appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/XXXXXX/ # 프로젝트 이름, S3에서 받아온 위치를 설정한다.
overwrite: yes
permissions:
- object: /
pattern: "**"
owner: ubuntu
group: ubuntu
(4) Github Actions 스크립트 추가
- name: Code Deploy
run: aws deploy create-deployment --application-name roadmaker --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name personal-deploy --s3-location bucket=$S3_BUCKET_NAME,bundleType=zip,key=$PROJECT_NAME/$GITHUB_SHA.zip
- application-name: CodeDeploy 애플리케이션의 이름
- deployment-config-name: 배포 그룹 설정에서 선택했던 배포 방식
- deployment-group-name: 배포 그룹의 이름
- s3-location: jar를 S3에서 가지고 오기 위해 차례로 bucket 이름, 파일 타입, 파일 경로를 입력
설정 후, Code Deploy Agent가 EC2 IAM 설정 전에 켜졌으므로 Code Deploy Agent를 껐다 켜 주자.
sudo service codedeploy-agent restart
반응형
'활동 > 크래프톤 정글 2기' 카테고리의 다른 글
01 | 무중단 배포환경 구축(Blue/Green) - 1 (0) | 2023.09.08 |
---|---|
나만의 무기 : 회고 (0) | 2023.09.06 |