어제 팀원 분들과 다른 팀원 분들 몇 분에게 AWS EB와 AWS ECR/Docker와 GitHub Actions로 배포하는 방법을 알려드렸다. 네 분의 화면을 실시간으로 확인하며 진행했는데 생각보다 오래 걸렸다.
우선 프론트 엔드 관련 파일들을 올릴 S3 생성과 Cloudfront의 배포 생성을 하고 S3와 Cloudfront를 연결시켰다. S3에 프론트엔드 파일들을 업로드 시키고 Cloudfront에 SSL을 붙였다.
SSL은 AWS ACM에서 발급 받았고 가비아에서 도메인 구입 후 네임 서버를 가비아에서 AWS로 변경하고 Route53에서 DNS 인증을 진행했다.
Cloudfront는글로벌 리전에서 제공하는 서비스라서Cloudfront에 적용하는SSL은버지니아 북부 리전에 생성해야 한다.
Cloudfront 기본 루트 객체에 index.html으로 설정하고 대체 도메인 이름에 www.도메인으로 설정했다. 그리고 www.도메인과 Cloudfront 주소를 Route53에서 연결했고 www.도메인으로 접속했을 때 index.html 페이지가 잘 나왔다. 그러면 프론트 배포 작업은 끝났다.
이제 GitHub Actions를 통해 AWS ECR에 도커 이미지를 push 하고 해당 이미지를 ECR에서 가져와 AWS EB에 배포하는 작업을 진행했다.
근데 모든 분들 다 한 번에 성공이 되지 않았다. 그래서 결국은 EB 환경, 애플리케이션 생성을 다시 하고 환경 변수 설정도 꼼꼼하게 다시 점검했다. 환경 변수 설정 후에 로드밸런서에 헬스 체크의 상태 코드를 200으로 설정하고 HTTPS 리스너를 추가할 때 SSL을 붙였다. 이 SSL은 서울 리전에 등록되어 있다.
다시 해본 결과 한 분은 성공했지만 한 분은 되지 않았다. 안 된 분은 VPC를 살펴보니 예전에 인터넷 게이트웨이를 삭제하셨던 적이 있었다. 그래서 인터넷 게이트웨이를 새로 생성했다. 그리고 RDS가 공격당했던 적이 있어서 보안 관련해서도 언급해드렸다.
GitHub Actions가 잘 작동되고 배포가 잘 되었다. 하지만 HTTPS에는 잘 되지 않아 여러 가지를 살펴본 결과 ACM에서 발급 받은 SSL을 보니 *.도메인으로 되어있지 않고 그냥 도메인으로만 되어 있었다.
그래서 다시 *.도메인으로 발급 받아서 진행하니 정상적으로 작동했다!
어제 하루 동안 배포 관련 작업을 직접 해보실 수 있게 나의 지식을 다른 사람들에게 공유했다.
한 번에 되지 않아서 오래 걸리긴 했지만 뿌듯하기도 하고 의미 있는 시간이었다.
작업에서 다룬 내용들 (내가 작성했던 글을 자료로 사용)
https://velog.io/@rudwnd33/%EB%AC%B4%EC%A4%91%EB%8B%A8%EB%B0%B0%ED%8F%AC
https://velog.io/@rudwnd33/DB-%EB%8F%84%EB%91%91-%EC%9E%A1%EC%95%84%EB%9D%BC