이제 CodeDeploy를 사용하기 위한 준비 작업을 마쳤고, 실제로 사용을 해보겠습니다.
1. CodeDeploy를 검색하여 들어간 후, 어플리케이션 생성을 클릭합니다.
2. 어플리케이션의 이름을 적은 후, 컴퓨팅 플랫폼은 EC2 인스턴스에 배포를 할 것이기 때문에 EC2를 선택해줍니다.
3. 어플리케이션 생성을 누른 후, 해당 어플리케이션에서 배포 그룹 생성을 클릭해줍니다.
4. 기존에 생성해준 서비스 역할을 선택해준 후, 현재 위치 배포를 해볼 것이므로 배포 유형은 현재 위치 배포로 선택해줍니다.
(배포의 종류 - hanjustudy.tistory.com/17?category=789280)
5. 환경 구성은 배포 그룹에 어떤 인스턴스를 추가할지 지정하는 화면이고,
대상 그룹과 마찬가지로 EC2 인스턴스를 직접 추가하거나, Auto Scaling 그룹을 추가할 수도 있습니다.
지금은 Auto Scaling 그룹을 선택해줍니다.
6. 배포 구성의 경우 한 번에 한 인스턴스씩 배포를 진행하는 CodeDeployDefault.AllAtOnce를 선택해줍니다.
7. 로드 밸런서는 Application Load Balancer 또는 Network Load Balancer를 선택한 후,
우리가 기존에 사용하던 대상 그룹을 선택해줍니다.
그리고 배포 그룹 생성을 클릭합니다.
8. 배포 그룹이 생성되었다면 배포 생성을 클릭해줍니다.
9. CodeDeploy Agent가 프로젝트를 받기 위한 레파지토리를 선택해야 하는데,
S3에 코드를 올려둔 뒤 불러오거나 Git을 연동하여 불러오는 방법을 선택할 수 있습니다.
어플리케이션을 GitHub에 저장을 선택한 후, GitHub 계정을 연동해줍니다.
(GitHub 계정이 없다면.. 생성해서 연동해야 합니다. 모두 있다는 것을 가정하겠습니다!!)
10. 배포를 테스트하기 위해 배포를 위한 레파지토리를 생성해주고, commit ID를 복사해줍니다.
(이 부분은 깃헙에 대한 사용법을 알고 있으면 좋습니다..! 언젠간 쓰게 될테니 안 써보신분들은 이 기회에 써보시는걸 추천합니다!)
11. 배포 생성을 클릭해줍니다.
(배포 실패 시 - docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/troubleshooting-deployments.html)
- 여기까지 했으면 배포가 정상적으로 될 줄 알았으나.. 실제로는 저도 정말정말 많은 오류가 있었습니다.
이를 해결하는데 정말 많은 시간이 들었네요..
우선 오류사항들을 정리해보면
1. 위의 사진에서 보이는 레파지토리 이름 실수..입니다.
CodeDeploy -> CodeDeployTest
2. appspec.yml 파일이 생성되지 않은 것.
이는 배포를 할 어플리케이션에 appspec.yml파일을 추가해줌으로써 해결하였습니다.
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/
최대한 간소하게 작성하였는데, 이는 깃헙에서 받은 소스들의 전체 파일( / )을 EC2 인스턴스의 /var/www/html/ 폴더에 옮긴다는 의미입니다.
3. 다음으로 인스턴스 하나가 배포가 아예 진행이 안되던 문제입니다.
이는 Auto Scaling 그룹에서 인스턴스를 3개를 생성하기로 하였는데 로드 밸런서에는 다음과 같이 2개의 인스턴스만 등록이 되어 있었어서
추가해줌으로써 해결하였습니다.
4. 다음으로 AllowTraffic에서 상태가 보류 중으로 뜨며 매우 오랜 시간이 지나도 진행이 안되는 문제입니다.
이는 3번 오류를 다시 보면 대상 그룹에서 상태 검사가 UnHealthy로 되어 있는 것을 확인할 수 있습니다.
이는 테스트를 하면서 테스트 파일명을 변경하였는데 경로는 변경해주지 않아서
상태 검사가 제대로 진행이 되지 않은 상태였고, 이로 인해 AllowTraffic이 진행이 되지 않았습니다.
그래서 다시 경로를 제대로 맞추어 주고 Healthy로 변경이 된 것을 확인해준 뒤 다시 배포를 해주었습니다.
이외에도 작은 오류들이 몇 개 있었고 모든 오류들을 거치고 나니, 다음과 같이 성공적으로 배포가 성공했음을 확인할 수 있었습니다.
'AWS' 카테고리의 다른 글
[AWS] CloudWatch Logs (0) | 2020.07.13 |
---|---|
[AWS] CloudWatch (0) | 2020.07.12 |
[AWS] CodeDeploy (1/2) (0) | 2020.07.10 |
[AWS] IAM (0) | 2020.07.10 |
[AWS] Route 53, HTTPS, SSL/TLS, Certificate Manager (0) | 2020.07.09 |