CodeDeploy란?
CodeDeploy는 AWS에서 제공하는 배포 자동화 서비스이다. ECS, Lambda, EC2, 온프레미스에 코드를 배포할 수 있으며 다운타임을 최소화할 수 있다. 한번 CodeDeploy를 찍먹해 보자.
CodeDeploy를 사용해 EC2 인스턴스에 배포해보자
대략적인 순서는 다음과 같다.
- IAM Role 생성
- EC2 인스턴스 생성
- S3 버킷 생성
- CodeDeploy 애플리케이션 생성
차근차근 해보자.
1. IAM Role 생성
먼저 CodeDeploy와 EC2가 사용할 IAM을 만들어야 한다. 배포를 위해선 CodeDeploy가 EC2에게 접근해야 하고, EC2도 S3에서 코드를 받아서 설치해야 한다. 이를 위한 작업이다.
- CodeDeploy가 사용할 IAM Role 생성
IAM -> 역할 -> 역할 만들기 -> 사용 사례에서 CodeDeploy 검색 후 선택 -> 다음 -> 자신이 기억할 수 있게 역할 이름과 설명 설정 -> 생성
- EC2가 사용할 IAM Role 생성
IAM -> 역할 -> 사용 사례에서 EC2 선택 -> 권한 정책에서 'CodeDeploy'를 검색한 후 'AmazonEC2RoleforAWSCodeDeploy' 정책 추가 -> 자신이 기억할 수 있게 역할 이름과 설명 설정 -> 생성
2. EC2 인스턴스 생성
이제 코드가 배포될 EC2 인스턴스를 만들어 준다. EC2 인스턴스 시작 페이지에서 적절한 이름, 인스턴스 유형, 키페어 등을 지정해주고, 고급 세부 설정의 IAM 인스턴스 프로파일에서 위에서 만든 Role을 지정한다. 그리고 접속을 위해 보안그룹에서 80번 포트를 Anywhere IPv4로 열도록 하자. 이제 CodeDeploy agent를 설치해야 한다. 인스턴스에 SSH 접속 후 아래 코드를 순차적으로 입력한다.
sudo yum update
sudo yum install -y ruby
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
그리고 아래 코드로 Agent를 실행시키고 실행중인지 확인한다.
sudo service codedeploy-agent start && sudo service codedeploy-agent status
3. S3 버킷 생성
이제 CodeDeploy에서 코드를 받아갈 수 있게 S3 버킷을 통해 코드를 저장해줘야 한다. S3 버킷을 하나 만들어 준다. 그리고 코드를 업로드 해야 하는데, 코드는 깃허브에 업로드된 예제 코드를 사용하도록 하겠다. 위 레포지토리의 /applications 에 SampleApp_Linux를 zip으로 압축한 후 S3에 업로드한다.
여기서 MacOS 사용자들은 Finder를 통해 압축하게 되면 오류가 뜬다. 따라서 압축해주는 사이트 등을 이용하자.
이거 때문에 1시간동안 삽질했다
4. CodeDeploy 애플리케이션 생성
CodeDeploy 애플리케이션과 배포그룹, 배포를 생성할 차례다. 먼저 간단히 CodeDeploy 애플리케이션을 생성해준다. CodeDeploy -> 적절한 이름 입력 -> 컴퓨팅 플랫폼은 EC2/온프레미스 선택 -> 애플리케이션 생성
이제 만든 애플리케이션에서 배포 그룹을 만들어 준다. 배포 그룹 생성 -> 적절한 배포 그룹 이름 -> 서비스 역할에 위에서 만든 CodeDeploy 역할 지정 -> 배포 유형에 '현재 위치' 선택 -> 환경구성에서 위에서 만든 EC2 인스턴스를 지정 -> 로드밸런싱 활성화 끄기 -> 배포 그룹 생성
다음으로 배포를 만들 차례다. 위에서 만든 배포 그룹 선택 후 배포 생성을 클릭한다. 개정 유형에 '애플리케이션을 S3에 저장'을 선택 -> 개정 위치에 S3에 업로드된 .zip 파일에서 S3 URI를 복사 한 후 붙여넣기 -> 배포 만들기
성공!
그럼 이렇게 배포에 성공하게 된다. 한번 EC2로 접속해보자.
정상적으로 접속된다.
Ghost