Gidhub BE Developer

Github Action으로 CI/CD 구축하기 - 1편 : AWS EC2 생성 및 설정

2022-02-14
goodGid

TOC (Table of contents)


Prologue

  • Github Action으로 CI/CD 구축을 위한 첫 번째 단계로

    AWS EC2 인스턴스 생성 및 설정에 대해 알아보자.


EC2 생성

Step 1

  • 우측 상단에 지역을 Asia Pacific (Seoul) ap-northeast-2 으로 맞추고

    위 사진처럼 “Launch Instance” 버튼을 클릭한다.


Step 2

  • Freetier이므로 해당 옵션을 클릭하고 원하는 OS를 선택한다.

    Ubuntu 버전은 반드시 20.04 버전으로 한다.


Step 3

  • 서버를 접속 시 인증을 하기 위한 .pem 키를 발급한다.

Step 4

  • Network 설정은 따로 건드리지 않고 기본적으로 선택되어 있는 상태를 유지한다.

Step 5

  • 인스턴스를 생성한다.

Step 6

  • “Edit tags” 버튼을 클릭한다.

  • tag를 설정해주는 이유는

    CodeDeploy에서 tag group을 지정하는데

    이 때 CodeDeploy에서 설정한 key 값이랑

    EC2에서 지정한 tag의 key 값을 매칭해서

    해당 EC2 인스턴스에 CodeDeploy에 정의한 동작을 실행한다.


Step 7

  • Inbound를 허용할 IP 설정을 위해

    해당 인스턴스에 연결되어 있는 Security group을 알야하는데

    위 사진처럼 원하는 인스턴스를 클릭 후 아래를 보면 알 수 있다.


Step 8

  • “launch-wizard-1”를 클릭하면 자동으로

    Security group 설정이 가능한 화면으로 전환된다.

  • 그러면 Inbound rules를 선택하고


Step 9

  • 정적인 IP를 발급받기 위해 “EC2 -> Elastic IPs”를 클릭한다.

    EC2 인스턴스만 생성하면 IP가 동적으로 변경된다.

    즉 클라이언트는 IP 변경 시 계속해서 바뀐 IP로 호출하도록 수정을 해야 한다.

    이런 번거로움을 없애고자 정적인 IP를 할당받아 사용한다.

  • 주의할 점은 나중에 EC2 인스턴스 종료 시

    인스턴스만 종료하고 정적 IP를 Release 하지 않으면 돈이 청구되니

    반드시 정적 IP도 같이 Release 하도록 하자 !


Step 10

  • “Allocate Elastic IP addressInfo”를 클릭한다.

Step 11

  • “Allocate” 버튼을 눌러 고정 IP를 할당받는다.

Step 12

  • 생성된 고정 IP를 클릭한다.

Step 13

  • “Associate Elastic IP address”를 클릭한다.

Step 14

  • Instance 칸에 방금 위에서 생성한 EC2 인스턴스를 넣고

    “Associate” 버튼을 클릭한다.

  • 이로써 EC2 인스턴스에 고정 IP 할당이 완료되었다.


Step 15

  • 생성한 인스턴스에 접근하는 방법에 대해 알아본다.

  • 우리가 생성한 인스턴스를 클릭 후 “Connect”를 클릭한다.


Step 16

  • ssh 명령어로 접근할 수 있는 Command 명령어를 복사한다.

    그리고 터미널에서 pem가 있는 곳으로 이동 후 복사한 명령어를 붙여넣는다.

  • 권한이 없다고 뜨면 명령어 가장 앞에 “sudo”를 붙히면 접속이 될 것이다.

    ex) sudo ssh -i “EC2.pem” ubuntu@ec2-15-164-37-248.ap-northeast-2.compute.amazonaws.com

  • 추가로 .pem 키로 접근하는 게 번거롭다면

    [AWS] EC2 Password로 접속하기 : Ubuntu Login with Password 글을 참고하여 P/W로만 접근할 수 있도록 설정을 변경하자.


Step 18

$ sudo apt update && sudo apt upgrade
$ sudo apt install openjdk-11-jdk
$ sudo apt install openjdk-8-jdk

$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
  • (선택 옵션)

    필자의 프로젝트는 스프링이므로 JDK를 설치해야 한다.

    인스턴스에 접속 후 본인이 사용할 JDK 버전을 설치한다.


Step 19

$ 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

Step 20

  • EC2 생성 및 인스턴스 내 설정을 완료하였다.

  • 다음으로는 EC2의 Config 설정과 같은 IAM(Identity and Access Management) 설정을 해야 한다.


Step 21

  • IAM 서비스 -> Roles -> Create role을 클릭한다.

Step 22

  • “AWS service”와 “EC2”를 클릭한다.

Step 23

  • [CodeDeployFullAccess, S3FullAccess] 권한을 부여한다.

Step 25

  • “Role name”에는 원하는 값을 입력한다.

    그리고 Policies에 [CodeDeployFullAccess, S3FullAccess]가 정상적으로 들어가 있는지 확인한다.

  • 정상적으로 생성되었다면

    생성된 IAM을 EC2 인스턴스에 적용해보자.


Step 26

  • “EC2 -> Instances -> Instance 우클릭 -> Security -> Modify IAM role”을 클릭 후

    방금 생성한 IAM role을 넣어준다.


Summary


Reference


Recommend

Index