티스토리 뷰

Elastic Beanstalk과 Jenkins로 CI, CD 구축하기 (Part1. Elastic Beanstalk 구축)

Elastic Beanstalk과 Jenkins로 CI, CD 구축하기 (Part2. Jenkins 설치)

Elastic Beanstalk과 Jenkins로 CI, CD 구축하기 (Part3. Jenkins Pipeline 구성)

 

 

이 글에서는 IAM Role을 생성하고 EC2에 Jenkins를 설치한 후 Role과 연결시켜보도록 하겠습니다.

 

1. IAM Role 생성

AWS CLI를 통해 S3와 Elastic Beanstalk에 접근하기 위해 역할을 하나 생성하도록 하겠습니다.

IAM > 역할로 이동 후 역할 만들기를 선택합니다.

 

 

 

Jenkins가 설치된 EC2에서 접근하기 때문에 AWS 서비스를 선택하고 EC2를 선택합니다.

 

 

 

 

추가해야 될 정책은 두 가지입니다.

 

1) AmazonS3FullAccess

2) AmazonElasticBeanstalkFullAccess

 

S3 권한 추가
Elastic Beanstalk 권한 추가

 

 

 

적절한 역할 이름을 입력 후 역할 만들기를 선택합니다.

 

 

 

 

 

 

2. EC2 설치

이제 Jenkins를 설치할 EC2 인스턴스를 Ubuntu 18.04 버전으로 만들어보도록 하겠습니다.

Redhat 베이스인 Amazone Linux AMI로 진행하실 분은 몇 가지 설정(ex.. Git, AWS CLI, Java 기본 설치 여부 등..)이나 명령어가 Ubuntu와 차이 나기 때문에 따로 구글 신에게 물어보셔서 진행해보시는 걸 권장드립니다.

 

2.1 인스턴스 추가

인스턴스 시작을 눌러 Ubuntu Server 18.04를 선택합니다.

 

 

 

인스턴스 유형은 선택은 t2.small로 진행하겠습니다.

t2.nano, t2.micro로 진행하게 되면 Jenkins 설치까지는 되나 build시 종종 메모리 부족으로 서버가 다운되는 현상이 발생하였었습니다.

 

 

 

 

보안 그룹을 설정합니다.

보안 그룹 이름과 설명을 입력한 후 22 포트의 경우 내부에서만 접속 가능하도록 설정하고 80 포트는 Git으로부터 webhook을 받아야 하기 때문에 위치 무관으로 설정합니다.

 

 

 

 

기존 키에서 선택하거나 새 키를 생성하여 사용합니다.

 

 

 

 

2.2 IAM Role 연결

생성된 EC2와 역할(Role)을 연결시켜보도록 하겠습니다.

이 작업을 하지 않으면 AWS CLI 사용 시에 'Unable to locate credentials' 라는 자격 증명을 찾을 수 없다는 메시지가 나오게 됩니다.

 

생성된 인스턴스에서 인스턴스 설정 > IAM 역할 연결/바꾸기를 선택합니다.

 

 

 

 

IAM 역할에는 이전에 생성 한 jenkins 역할을 선택합니다.

 

 

 

2.3 Java 설치

EC2에 접속하여 Java8 버전을 설치해보도록 하겠습니다.

참고로 Amazon Linux로 진행하신 분들은 기본으로 7 버전이 설치되어있기 때문에 8 버전 설치 후 설정을 변경해주시는 작업을 진행하셔야 합니다. Ubuntu 18로 생성하신 분들은 아래 내용을 그대로 따라 하시면 됩니다.

 

 

2.3.1 패키지 관리 툴 (apt) update

$ sudo apt update

 

 

2.3.2 Java8 설치 (OpenJDK)

$ sudo apt install openjdk-8-jdk

 

 

2.3.3 Java 버전 확인

$ java -version

openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

 

 

2.3.4 Java 홈 디렉터리 확인

$ update-alternatives --get-selections | grep ^java

java                           auto     /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
javac                          auto     /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
javadoc                        auto     /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc
javah                          auto     /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
javap                          auto     /usr/lib/jvm/java-8-openjdk-amd64/bin/javap

 

 

2.3.5 JAVA_HOME 설정

이전 단계에서 확인 한 Java 홈 디렉토리를 JAVA_HOME으로 설정하도록 하겠습니다.

vi로 /etc/environment를 열어서 JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"를 추가해주도록 하겠습니다.

$ sudo vi /etc/environment

 

 

 

파일을 다시 로드합니다.

$ source /etc/environment

 

 

JAVA_HOME이 정상적으로 설정되었는지 확인합니다.

$ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64

 

 

2.4 AWS CLI 설치

서버에서 AWS 명령어를 사용하기 위해 CLI를 설치하도록 하겠습니다.

Amazon Linux로 시작하신 분들은 기본적으로 설치가 되어있기 때문에 따로 설치하지 않으셔도 됩니다.

 

 

2.4.1 AWS CLI 설치

$ sudo apt install awscli

 

 

2.4.2 버전 확인

$ aws --version

 

 

 

3. Jenkins 설치

이제 Jenkins를 설치해보도록 하겠습니다.

Ubuntu Package에서는 Jenkins를 기본으로 지원하지 않기 때문에 Jenkins 저장소를 추가해주어야 합니다.

 

 

3.1 Ubuntu 18에서 Jenkins 설치

3.1.1 시스템 저장소에 Jenkins 저장소 키 추가

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -

만약 위 명령어 입력 후 [3.1.3 패키지 관리 툴 (apt) update] 시 서명(signed) 관련하여 오류메시지가 발생된다면 아래 명령어로 다시 시도해줍니다.

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

 

 

 

3.1.2 sources.list에 데비안 패키지 저장소 추가

$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

 

 

3.1.3 패키지 관리 툴 (apt) update

$ sudo apt update

 

 

3.1.4 Jenkins 설치

$ sudo apt install jenkins

 

3.1.5 Jenkins 상태 확인

$ systemctl status jenkins

 

 

설치가 완료되면 자동으로 시작하게 되어있지만 혹시 시작되지 않았으면 아래 명령어로 실행시켜 줍니다.

$ sudo systemctl start jenkins

 

 

3.2 Nginx 설치

Jenkins의 기본 포트는 8080입니다. 

8080의 경우 다른 소프트웨어에서 많이 사용하는 포트이기도 하고 (ex. Tomcat) URL로 접근 시 포트 입력 없이 바로 접근 가능하도록 하기 위해 웹서버를 앞에 두고 Jenkins로 프록시 되도록 하겠습니다.

 

 

3.2.1 Nginx 설치

$ sudo apt install nginx

 

 

3.2.2 Nginx 상태 확인

$ systemctl status nginx

 

3.2.3 Reserve Proxy 설정

Nginx 포트(80)로 접근 시 Jenkins 포트(8080)로 프록시 되도록 설정하도록 하겠습니다.

 

프록시를 설정하는 파일을 엽니다.

$ sudo vi /etc/nginx/sites-available/default

 

 

location의 내용을 변경해 줍니다.

proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;

 

3.2.4 Nginx 재시작

$ sudo systemctl restart nginx

 

 

3.3 Jenkins 초기 설정 

Jenkins에 접속해보도록 하겠습니다.

초기 어드민 비밀번호를 입력하라고 나오는데 Jenkins 서버에서 아래 명령어로 조회 가능합니다.

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

 

시스템에서 알려주는 비밀번호를 복사한 후 입력합니다.

 

 

 

기본 플러그인 설치로 진행하도록 하겠습니다. Install suggested Plugins를 선택합니다.

 

플러그인 설치 중..

 

 

플러그인 설치가 끝나면 다음 단계로 진행합니다.

 

 

 

 

다음 글에서는 Jenkins Pipeline에 대해 알아보도록 하겠습니다.

최근에 올라온 글
Total
Today
Yesterday
링크