728x90

 

 

 

해당 시리즈는 현재 필자가 연습하고자 하는 서비스 아키텍쳐와 맞지 않아 Springboot 와 Gradle 을 사용한 시리즈를 다시 작성하고 있습니다. 최신 시리즈를 확인하여주시고 이 시리즈는 끝마치지 못한 부분이 있어 설치 부분만 참고를 하시길 바랍니다.

 

(최신 시리즈)

 

Jenkins&Springboot CI/CD 정리(1)

Jenkins&Springboot CI/CD 정리(1) 필자가 경험한 Springboot 프로젝트와 Jenkins CI 를 활용한 CI/CD 구축에 대해 정리를 해보고자 합니다. =) 이 시리즈에서는 이미 작성된 내용에 대해선 해당 글로 대체 할 예

0andwild.tistory.com

 

1편에서 만들어둔 EC2 인스턴스를 중지시키고 이미지(AMI)를 생성해줄 겁니다.

아직 인스턴스 생성과 초기 작업이 수행되지 않았다면 아래 링크를 참고하여주세요.

 

Jenkins를 이용한 CI/CD Pipeline 구축해보기(1)

우선 AWS(Amazon Web Service)에서 제공하는 Ec2(Elastic Compute Cloud)라는 클라우드 컴퓨터를 대여 받아 이 위에 어플리케이션을 실행시키고 Jenkins와 Docker를 이용하여 CI/CD를 구축하고 테스트를 진행해보..

0andwild.tistory.com

 

서버를 이미지화 하였을 때의 큰 장점은 서버가 정상적으로 동작했을 때의 상태를 미리 이미지로 저장해 놓을 수 있는 겁니다. 그렇기 때문에 서버에 문제가 생겼을 때 현재의 서버를 내리고, 이미지(AMI: Amazon Machine Image)로 만들어 놓았던 것을 그대로 AWS EC2 인스턴스로 만들 수 있습니다.

 

인스턴스가 중지되었으면 우클릭 후 이미지 및 템플릿에 있는 이미지 생성 버튼을 클릭해주세요.

 

그럼 이와 같이 창이 뜨는데 여기에서 이미지 이름만 입력을 해준 후 이미지 생성 버튼을 클릭해줍니다.

 

생성을 완료하였으면 EC2 카테고리에 있는 이미지의 AMI로 들어와서 확인을 해봅니다.

생성을 하는데 있어 시간이 조금 걸리니 기다리면서 위 이미지의 Name을 지정해봅시다.

필자는 위와 같이 네이밍을 해주었습니다.

사용가능이 되었습니다. 이제 처음 중지시켰던 인스턴스를 다시 시작해줄 겁니다.

인스턴스 시작 버튼을 눌러주세요.

인스턴스가 시작되는 동안 다른 인스턴스에서 편리한 상호 접속을 위하여 보안그룹에서 Tag를 만들어줄 겁니다. 노란색 부분을 클릭해주세요.

들어왔다면 태그의 태그관리 버튼을 눌러줄 겁니다.

새로운 태그 추가 버튼을 눌러주고 필자는 키,값을 다음과 같이 입력하고 변경사항을 저장하였습니다.

태그가 생성된 것을 확인할 수 있고 이 Tag를 활용하여 보안 그룹을 선택할 수 있습니다.

다시 인스턴스로 들어와 새로운 인스턴스를 4개 추가해줄 겁니다. 인스턴스 시작 버튼을 눌러주고 이름을 지정해줍니다. 그 후 내 AMI를 클릭해주고 좀 전에 만들어 두었던 이미지를 선택해줄 겁니다.

다음으로 넘어와 키 페어(Key-pair)부분은 맨 처음 인스턴스를 만들면서 생성한 키페어를 선택해줄겁니다.

네트워크 설정의 경우 기존 보안그룹 선택을 해주고 위와 동일하게 생성하였던 인스턴스와 동일한 보안그룹을 선택해줍니다.

우측 고정 배너에 있는 요약에 인스턴스 개수를 4개로 설정하고 인스턴스 시작버튼을 클릭해줍시다.

그럼 기존 인스턴스를 포함하여 총 5개의 인스턴스가 생성된 것을 확인할 수 있습니다.

필자는 방금 생성한 인스턴스의 각각의 이름을 다음과 같이 변경해주었습니다.


이제 Terminus에 방금 생성한 인스턴스들을 등록해줄 겁니다.

필자는 인스턴스에 편리한 접근을 위해 Terminus 라는 SSH Client Tool을 사용하고 있는데 필수는 아니지만 설치 및

사용법을 아래 링크를 통해 확인하실 수 있습니다. =)

 

편리한 EC2 인스턴스 접속(SSH Client Tool)

편리한게 AWS EC2 인스턴스에 접속을 하기 위해 SSH Client Tool 을 사용해보자! 필자는 Windows 환경에서 EC2 인스턴스에 접속을 하기 위해 gitbash를 사용하는 편이지만 좀 더 편리하게 접속을 하기위해 Te

0andwild.tistory.com

만약 사용하고 있지 않다면 gitbash를 통해 AWS EC2 인스턴스에 접속하여도 무방합니다.

필자는 위와 같이 Terminus에 5개의 인스턴스를 모두 등록해주었습니다.

이와 같이 접속이 잘 이루어진 것도 확인해주세요.


 

이제 Jenkins로 사용할 인스턴스에서 Docker 인스턴스에 Ping test를 해볼겁니다.

Ping에 대한 응답이 없는 것을 확인할 수 있습니다. 이를 해결하기 위해 AWS EC2에 들어가 생성하였던 아무 인스턴스를 선택하고 보안그룹을 눌러주세요.

Ping에 대한 응답이 없는 것을 확인할 수 있습니다. 이를 해결하기 위해 AWS EC2에 들어가 생성하였던 아무 인스턴스를 선택하고 보안그룹을 눌러주세요.

인바운드 규칙 편집을 눌러주고 규칙추가를 해줍시다.

모든 ICPM-IPv4를 선택해주고 보안그룹은 우리가 만들어둔 인스턴스들이 모두 사용하고 있는 보안 그룹을 선택해 줄겁니다. 그리고 규칙 저장을 눌러줍니다.

 

<ICPM이란?>

인터넷 제어 메시지 프로토콜(ICPM: Internet Control Message Protocol)로 주로 오류메세지를 전송 받는데 주로 쓰인다.

+ Ping test시 사용

ICPM 프로토콜은 TCP/IP 계층에서 NetWork 계층에 속하고 IP 프로토콜과 같이 사용한다.

자세한내용은 아래 블로그를 참고해주세요.
 

ICMP (Internet Control Message Protocol) 란 무엇인가 ?

선선한 바람이 불기 시작한 9월입니다. 환절기에 감기 조심하시구요~ 오늘의 주제인 ICMP에 대한 이야기를 시작해 보겠습니다. 1. ICMP란?  ICMP[Internet Control Message Protocol]  : 인터넷 제어 메시지 프.

run-it.tistory.com

 

다시 Ping test를 진행해봅시다.

정상적으로 Ping이 가는 것을 확인할 수 있습니다.

Ping test를 중지하고 싶다면 Ctrl + c 를 눌러주세요.

 


이제 Gradle을 설치해보도록 하겠습니다.

 

Maven설치는 아래 링크 글을 참고해 주세요.

 

AWS EC2 인스턴스에 Maven 설치하기

우선 자신의 EC2 인스턴스의 SSH에 접속을 해줍니다. 필자는 현재 SSH-Client-Tool 로 Terminus를 사용중입니다. gitbash를 사용해도 무방합니다 =) 편리한 EC2 인스턴스 접속(SSH Client Tool) 편리한게 AWS EC2..

0andwild.tistory.com

 

VERSION=7.5.1
wget https://services.gradle.org/distributions/gradle-${VERSION}-bin.zip -P /tmp

apt-get install gradle을 이용하여도 무방하지만 원하는 버전 또는 최신버전을 사용해보기 위해 직접 설치를 해보도록 하겠습니다. 위의 명령어를 차례대로 입력해주고 gradle 최신 버전을 받아보도록 하겠습니다. 필자는 7.5.1 버전이 최신이기에 이를 다운받아보겠습니다.

 

gradle 최신버전은 아래 링크를 통해 확인 가능합니다.

 

Gradle | Releases

Find binaries and reference documentation for current and past versions of Gradle.

gradle.org

 

Sudo apt-get install unzip

필자는 zip파일을 압축해제 하기위해 unzip 패키지를 설치해주었습니다.

 

sudo unzip -d /opt/gradle /tmp/gradle-${VERSION}-bin.zip

이제 좀 전에 받은 gradle 압축파일을 해제해줍시다.

 

sudo ln -s /opt/gradle/gradle-${VERSION} /opt/gradle/latest

최신버전 관리를위해 심볼릭 링크를 등록해줍니다. 나중에 설치를 업데이트하려면 최신 버전의 압축을 풀고 최신 버전을 가리키도록 심볼릭 링크를 변경하면 됩니다.

 

<심볼릭 링크 변경법>

 

리눅스 ln 심볼릭 링크 변경

링크 생성 ln -s [marubao@localhost ~/test]# ln -s link1 link [marubao@localhost ~/test]# ll 합계 0 lrwxrwxrwx. 1 marubao marubao 5 5월 11 09:29 link -> link1 drwxrwxr-x. 2 marubao marubao 6 5월 11 0..

gamechangers.tistory.com

 

sudo vim /etc/profile.d/gradle.sh

환경변수 설정을 위해 자신이 편한 편집기를 통해 접속합니다. 필자는 vim을 사용하도록 하겠습니다.

 

export GRADLE_HOME=/opt/gradle/latest
export PATH=${GRADLE_HOME}/bin:${PATH}

다음과 같이 입력을 해주고 저장을 해주고 나오도록 합니다.

vim 의 경우 i 를 누르면 insert 모드로 변경이 되고 입력이 가능해집니다. 입력이 끝나면 esc를 누른 후 : 을 누른후 w 로 저장을 해줍니다. 그 후 : 을 누른후 q 를 누르면 빠져나올 수 있습니다.

 

Vim 명령어는 아래 블로그를 참고해주세요.

 

[Vim] 파일 열기, 저장, 종료

이제 본격적으로 vim 의 사용법에 대해 알아보겠습니다. 파일 열기 리눅스 쉘 프롬프트 상에서 vim hello.c 이렇게 명령어를 입력하면 vim 이 실행되면서 hello.c 파일이 열립니다. 만약에 hello.c 파일이

gracefulprograming.tistory.com

 

sudo chmod +x /etc/profile.d/gradle.sh

스크립트에 실행권한을 부여합니다.

 

source /etc/profile.d/gradle.sh

source 명령어를 통해 작성한 스크립트를 적용시켜줍니다.

 

<Source 명령어란?>

 

[Linux] source 명령어

source 명령어란 source 명령어는 스크립트 파일을 수정한 후에 수정된 값을 바로 적용하기 위해 사용하는 명령어 예를들어 ~/.bashrc 파일을 수정 후 저장하여도 수정한 내용이 바로 적용되지 않는다

chunggaeguri.tistory.com

 

gradle -v

위의 명령어를 통해 설치한 gradle을 확인할 수 있습니다.

 

 


이제 git을 설치해볼겁니다.

sudo apt install git

git을 설치해줍니다.

git –version

git이 잘 설치되었는지 확인을 해줍니다.

 


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

 

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

Jenkins 설치를 위해 Repository key를 추가해줍니다.

 

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

서버의 sources.list에 Jenkins 패키지 저장소를 추가해줍니다.

 

sudo apt-get update

패키지 인덱스 정보를 업데이트 해줍니다.

 

sudo apt-get install Jenkins

Jenkins 패키지를 설치해주겠습니다.

 

sudo systemctl start Jenkins

명령어를 입력하여 jenkins를 실행시켜줍니다.

 

Sudo systemctl status jenkins

정상적으로 잘 실행되었다면 위의 명령어를 입력하여 다음과 같은 로그를 확인할 수 있습니다.

 

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

위의 명령어를 입력해주고 jenkins의 초기 비밀번호를 확인해줍니다. 앞에 sudo가 빠지면 accessdenied 가 뜰 수 있으니 꼭 sudo를 앞에 입력해주어 슈퍼유저 권한으로 실행시켜주세요.

 

Jenkins는 기본적으로 8080포트를 사용하는데 만약 AWS EC2 인스턴스의 인바운드 규칙에 8080포트가 열려있지 않다면 포트를 열어주세요.
필자의 경우 기존에 사용하던 인스턴스를 재사용하는 것이라 다른 포트도 열려있지만 우선은 8080포트가 열려있지 않다면 열러주세요.


(Jenkins의 기본 포트 번호도 변경하여 사용이 가능합니다. 이 내용은 아래 참고블로그의 7번에 해당됩니다.)

 

[Jenkins로 CI/CD 구축하기 - 1] Ubuntu(18.04)에 Jenkins 설치하기

이번 포스팅에서는 Ubuntu(18.04)에 Jenkins를 설치하고 환경 설정까지 하는 방법을 공유하도록 하겠습니다.

imbf.github.io

 

http://(hostIp or hostName):8080

 

hostIp의 경우 자신의 AWS EC2 인스턴스의 public Ip 주소를 복사하여 넣어주시면 됩니다. 만약 jenkins의 접속 포트 번호를 변경하였다면 뒤의 포트번호를 변경한 포트번호로 바꾸어주어야 합니다.

접속을하면 다음과 같은 창이 뜨는데 여기에 아까 명령어를 통해 확인한 jenkins의 초기 비밀번호를 넣어줍니다.

 

비밀번호를 잘 입력하였다면 다음과 같은 창을 보게 될 것입니다.
여기서 파란불이 들어와있는 Install suggested plugins를 눌러줍시다.

 

그럼 다음과 같이 권장 plugin들을 설치하게 되는데 끝이 날때까지 기다려줍시다.

 

설치가 끝나면 다음과 같은 창이 뜨고 여기에 브라우저를 통해 Jenkins 접속시 사용할 아이디 비밀번호 이메일 등을 입력해 줍니다. 꼭 잊어버리지 않게 어딘가에 메모를 해두세요!

 

그 다음 Jenkins 를 실행하면 다음과 같은 창을 만날 수 있을 겁니다.


다음 챕터에서는 도커를 구축해보도록 하겠습니다.

728x90
반응형
복사했습니다!