Jenkins, Elastic Beanstalk 연동

음... 어떻게 될지는 잘 모르겠지만 현재 생각한 구성은 이렇다~
1. push를 하면 github에 설정한 Webhook으로 Jenkins에 요청을 보내고
2. 젠킨스는 이전 Test 과정에서 했던 것처럼 서버에 Deploy요청을 보낸다.
3. 이후가 문제인데... 일단 S3와 Elastic Beanstalk에 대해 공부해 봐야겠다.음... 어떻게 될지는 잘 모르겠지만 현재 생각한 구성은 이렇다~
1. push를 하면 github에 설정한 Webhook으로 Jenkins에 요청을 보내고
2. 젠킨스는 이전 Test 과정에서 했던 것처럼 서버에 Deploy요청을 보낸다.
3. 이후가 문제인데... 일단 S3와 Elastic Beanstalk에 대해 공부해 봐야겠다.
4. 고 했는데 S3 이전에 AWS 장기자격증명 IAM 유저, AWS CLI , AWS SDK 에 대해 먼저 공부 해보자
S3 개념
S3에 데이터를 저장하기 위해 객체와 버킷이라는 것을 알아야 한다.
- 객체(Object) : S3에 데이터가 저장되는 기본 단위, File 과 MetaData로 이뤄져 있다. (MetaData는 MIME형식으로 파일확장자를 통해 자동으로 설정// 사용자 임의로도 지정 가능)
- 버킷(Bucket) : S3에서 생성 할 수 있는 최상위 디렉토리(폴더) 개념으로 이름은 S3 리전 중에서 유일해야 한다.
S3의 디렉토리별 스토리지(저장소) 옵션을 지정 할 수 있으며 다음 두가지 옵션이 있다.
- Standard Storage : 표준스토리지는 S3 서비스 수준 계약으로 객체에 대해 99.99% 내구성 보장 및 가용성을 제공한다. 높은 내구성을 보장하는 만큼 비용이 높으므로 주로 원본 데이터 등 중요 데이터를 저장한다.
- Reduced Redundancy Storage(RRS) : 표준 스토리지보다 저렴한 비용으로 데이터를 저장, RRS 는 원본을 복제한 데이터나 가공한 데이터 'ex)썸네일 ' 같은 데이터를 저장하는 것이 알맞다.
Jenkins 서버
에서 EB와 S3 연동을 위해 빌드 후 조치 탭에 이와같이 작성해준다.
작성시 필요
- IAM 유저의 access key ID , Secret access key
- Elastic LoadBalancer 주소를 도메인으로 바꿔주기위한 작업(가비아와 AWS Route53 연결)
- AWS Certificate Manager 에서 사용자 인증받기 (가비아 썻을경우)
그러나...
로그를 확인 한 결과 아마 nginx와 내 프로젝트 서버의 ip가 충돌하는 것 같다.
정확한 이유를 찾으려면
멘토님이 말씀해 주신 서버 502 error 기본 대처법!
1. local에서 돌아가는지?
2. 포트가 맞게 연결 되었는지?
3. ec2연결은 되는지?
4. .env파일의 url이 알맞는지?
5. 방화벽이 설정되어있거나 안되어있는지?
결국 EB를 쓰지 않고 위의 그림처럼 바로 배포하였다
(vscode의 script폴더의 만들어 deploy파일을 Jenkins서버에서 project서버로 실행시켜 주는 로직으로 배포)
느낀점 : Test할 때 막힘없이 잘 된다? 의심해봐야한다.
놓친게 없는지 체크리스트를 만들어 체크해보자!
참고 블로그
https://hihoyeho.tistory.com/entry/Elastic-Beanstalk%EA%B3%BC-Jenkins%EB%A1%9C-CI-CD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-Part1-Elastic-Beanstalk-%EA%B5%AC%EC%B6%95
https://joobly.tistory.com/6?category=791079
NDS
https://tech.cloud.nongshim.co.kr/2021/11/01/hands-on-elastic-beanstalk%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC-aws-console/
[Hands On] Elastic Beanstalk를 사용한 웹 애플리케이션 배포 - AWS Console
Elastic Beanstalk에서는 .NET, Docker, Go, Java, Node js, PHP. Python, Ruby, Tomcat, GlassFish 와 같은 플랫폼을 지원합니다. 이번 Hands On에서는 Node.js 와 Python(Django)를 사용하여 웹 애플리케이션을 배포해 보도록 하
tech.cloud.nongshim.co.kr
https://danidani-de.tistory.com/14?category=894763
Jenkins + Git + NodeJS + AWS Elastic Beanstalk로 배포하기(4) - 빌드 성공 시 EB로 자동 배포 :: DANIDANI
nodejs에서 작성한 express 애플리케이션을 git에 올리면 트리거를 이용해 jenkins에서 자동 빌드가 되고 nodejs에서 작성한 테스트 코드가 실행됩니다. 빌드에 성공하고 테스트 코드도 모두 통과가 되
danidani-de.tistory.com