AWS/aws CICD-metacoding

배포v5 -엘라스틱빈스톡+RDS- github action+NLB

MDanderson 2024. 8. 20. 18:39


CI에는 .github/workflows/deploy.yml만 필요(파일명은 중요하지않음 확장자만yml이면 됨)

CD에 .ebextensions폴더랑  Procfile파일 필요.

 

deploy.yml 파일이 트리거역할을 하여 CI진행, CD가 진행된다.

 

CI절차 

git repository에 푸쉬되는순간 CI서버에

우분투설치

jdk설치

코드다운로드

코드테스트

build(실행파일 생성)

-----------------------------여기까지CI

설정하고 github actions 들어가서 활성화 해준다음  , 커밋,푸쉬하면  CI 까지완성

 

 

CD절차

 

그다음 CD진행하려면,  deploy.yml에 CD코드를 추가하고  .ebextensions폴더랑  Procfile파일 필요.

 

엘라스틱빈스톡에

*.jar파일을 업로드하면  /var/app/current/application.jar로 바꿔서 업로도되고  /var/app/current/Procfile 만듦

Procfile에는 java -jar application.jar 스크립트가 들어가있어서 단순하게 jar파일을 실행

 

그에 반해  deploy.zip파일을 업로드하면 알아서 압축을 풀어서

application.jar ,Procfile, .ebextention을 /var/app/current/에 넣는다. 

먼저 .ebextention폴더에  jar파일을 실행하라는 스크립트를 만들어서 /sbin/appstart로 만들라는  스크립트가 적혀있다. 

그다음 Procfile이 실행되는데 

springapp: appstart

 

 

라고 적혀있는데 springapp이란 거는 아무거나 적어도 되는 자리이고 appstart를 실행

리눅스에서는 bin이나 sbin이나 이런 폴더 내부 파일은 어느폴더에서든지 실행할 수 있다.(환경변수가 등록되어있음 PATH가 잡혀있기 떄문 그래서  Procfile에는  sbin에있는 appstart파일을 실행시키라는 스크립트가 적혀있는 것.

 

nohup 을 안쓰는 이유?  docker로 실행되기때문에 백그라운드에서 실행됨.

 

 

 


IAM사용자 생성

사용자이름 metacoding

자격증명유형선택 - 액세스키 선택

기존정책 직접연결 AdministratorAccess- AWSElasticBeanstalk 선택

액세스키 생성 후 이것을 깃허브 레포지토리 셋팅- secrets -actions에 등록한다.

 

 

 


RDS DB에 한글이 insert 안되는 문제

RDS- 파라미터그룹에 들어가서 character_set검색 후 나오는 모든 값을 utf8mb4 로 설정  

그리고 재부팅

->그래도 안된다 왜냐면 인코딩설정을 하기전에 테이블을 만들었기떄문.

그래서 drop table 하고 다시 테이블을 만들어야함

 

 

 

로그 보기

ec2로 ssh접속하여

cd /var/app/current

cd /var/log에서

sudo cat springapp.stdout.log 또는  sudo tail -f springapp.stdou.log

 


NLB 고정 IP설정

 

1.탄력적ip생성후

2. 로드밸런서- 로드밸런서 생성 -NLB선택 -  northeast 1개 선택후 고정ip로 설정

3.  리스너에서  대상등록 - 대상그룹생성 에서 기존 alb를 등록해준다.  이 대상그룹으로 80포트가 라우팅되게 한다.

 

 

'AWS > aws CICD-metacoding' 카테고리의 다른 글

docker exec  (4) 2024.09.04
배포v5 롤링배포  (0) 2024.08.20
배포v5 엘라스틱빈스톡+RDS -기본 설정  (0) 2024.08.20
배포v4 엘라스틱빈스톡 + RDS  (0) 2024.08.19
배포v3 엘라스틱빈스톡  (0) 2024.08.19