devops

GithubAction과 CodeDeploy를 활용한 CICD:EC2에 SpringBoot 배포-1(배포과정,IAM 역할설정,EC2 생성 및 설정)

yougeun 2023. 3. 28. 14:29
728x90

배포과정

  1. 코드를 작성한 뒤, Github에 push를 한다.
  2. master 브랜치에 push가 발생하면, Github Actions이 실행된다.
  3. Github Actions는 빌드를 하여 코드에 문제가 없는지 확인한다.
  4. Github Actions는 프로젝트 파일을 압축하여 AWS S3로 전송하고, CodeDeploy에게 배포를 요청한다.
  5. CodeDeploy는 S3로부터 zip 파일을 받아 배포를 진행한다.

IAM 역할설정

1.EC2에서 S3 접근 권한 IAM 생성

(1) IAM -역할-역할만들기

 

(2)AmazonS3FullAccess 권한 추가

 

(3)역할 이름 및 권한 확인

2.CodeDeploy 역할 생성

(1) IAM-역할-역할 만들기

(2) AWSCodeDeployRole 권한 확인

(3) 역할 이름 생성 및 권한 확인

EC2 생성 및 권한 추가

1.EC2->인스턴스->인스턴스시작

EC2 Name은 비어 있어도 상관없습니다.

AMI는 어떤서버로 구성할지 선택하면됩니다.

프리티어를 사용할거기 때문에 ubuntu LTS를 사용했습니다.

2.인스턴스 유형 선택

서버의 크기에 맞게 인스턴스 유형을 선택하면 됩니다.

3.키페어 생성

(1)새 키페어 생성

키페어는 EC2에  SSH로 접속하기 위해 필요하기 때문에 꼭 생성해주어야 합니다.

(2)키 페어 이름 ,유형,형식 지정

키 페어 생성을 누르면 키페어이름에 맞는 pem 키가 다운되며 재 다운 받을 수 없기 때문에 안전한 곳에 저장해둡니다.

(3)키 페어 등록

위에서 만든 키페어를 등록합니다.

4.네트워크 설정

SSH 트래픽을 허용해주고 상황에 맞게 IP를 설정 해줍니다.

5. 스토리지 구성

프리티어의 스토리지는 30GiB까지 설정할 수 있습니다.

스토리지를 구성 후 인스턴스 시작버튼을 눌러 인스턴스를 생성합니다.

6.EC2 IAM 역할 연결

위에서 만든 S3권한 IAM을 EC2에 할당해줍니다.

7.EC2 보안그룹 설정

EC2 보안그룹에서 http,https,Springboot port를 열어줍니다.

접속가능한 IP는 상황에 맞게 선택하면 됩니다.

8.EC2 태그 추가

원하는 키값을 입력하고 저장을 누릅니다.

CodeDeploy를 생성할 때 EC2 태그가 있어야 EC2를 선택할 수 있습니다.

9.EC2 연결

10. EC2에 자바 설치

# EC2 인스턴스
$ sudo apt-get update
$ sudo apt-get install openjdk-11-jdk #자바 11 설치
$ java --version #자바 설치 확인

 

11.CodeDeploy agent 설치

$ sudo apt update
$ sudo apt install ruby-full
$ sudo apt install wget
$ cd /home/ubuntu
$ wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto > /tmp/logfile
$ sudo service codedeploy-agent status

 

ubuntu Server의 CodeDeploy  Reference의 가이드에 따라 설치합니다.

12.Spring port 포트포워딩

$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

http포트(80번)을 SpringPort에 맞게 포트포워딩합니다.

728x90