# ssh-keygen -t rsa -f ~/.ssh/id_rsa

먼저, ssh로 연결하기 위해서 위 명령어를 이용하여 ssh키를 발급한다.

위에서 확인한 공개키/개인키의 주소로 이동한 후 조회해보면 위와 같이 공개키와 개인키를 확인할 수 있다.

Jenkins는 개인키로 발급하고, 발급된 서명을 각 가상 PC에서 공개키로 검증하게 하므로 공개키 정보를 확인해야 한다.

해당키를 위와 같이 확인할 수 있고, 이 공개키를 잘 저장해둔다.

# apt install openssh-server
# nano -l /etc/ssh/sshd_config
# service ssh restart

또한, Jenkins-worker 인스턴스에서 위 명령어를 이용해 해당 파일을 수정해준다. 해당 파일의 14번, 38번, 57번 주석을 해제한다.

$ docker run -d -it --net jenkins-net --name jenkins-worker ubuntu:22.04
$ docker exec -it jenkins-worker bash
# apt update
# apt-get install vim
# apt-get install nano
# su jihyun

Jenkins가 관리할 가상 PC를 하나 더 생성해 준 후 ~/.ssh 경로에 authorized_keys 파일을 만들어준다.

.ssh 폴더는 700, authrized_keys 파일은 600으로 권한을 설정한 후 authorized 파일에 복사한 공개키를 저장해준다.

위와 같이 잘 복사된 것을 확인할 수 있다.

 

Jenkins 서버에서 ssh를 활용한 스크립트 전달이 가능하도록 플러그인을 설치해야 한다.

플러그인에서 publish 검색 후 public over ssh를 설치한다.

Manage Jenkins > System 창 하단의 Publish over SSH란으로 이동한 후 Key 부분에 아까 생성한 개인키를 붙여넣는다.

 

SSH Servers 추가를 눌러 하단에 확장시킬 수 있는 창을 이용하여 아래 그림과 같이 Jenkins가 관리한 가상 PC 정보를 입력해준다.

① Name에는 식별 가능한 이름을 작성한다.

② Hostname에는 비공인 IP를 넣어준다.

jenkins-worker의 ip를 확인 후 아래 사진의 Hostname 부분에 입력해준다.

③ Username에는 우분투 계정명을 적어준다. 

④ Remote Directory에는 홈 디렉토리를 사용한다.

우측 하단의 Test Configuration으로 확인하여 Success가 뜨면 테스트 접근에 성공한 것이다.

 

※ ssh 접근 오류가 발생하는 경우

# apt install openssh-server
# nano -l /etc/ssh/sshd_config    # 14, 38, 57 주석 해제
# service ssh start

 

 

배포 스크립트는 Item이라는 단위로 관리된다.

New Item에서 Freestyle project를 이용한다.

하단의 post-build action을 위 항목으로 선택해준다.

고급에서 Verbose output in console을 체크해야 좀 더 자세하게 로그를 볼 수 있다.

Exec command에 수행할 명령어를 작성해준다.

저장 후 콘솔 output을 확인해보면 해당 인스턴스에서 ls -a 명령을 수행한 결과를 확인할 수 있다.

위와 같이 해당 인스턴스에서 입력했을 때와 같은 결과인 것을 확인할 수 있다.

 

 

스트레스 테스트용 스프링 어플리케이션 jar(war) 배포 해보기

먼저, 위와 같이 gradlew 파일이 보이는 지점으로 이동한다.

./gradlew build 명령어를 이용해 빌드를 수행한다. (기존 build가 있다면 ./gradlew clean build)

위와 같이 BUILD SUCCESSFUL 문구를 확인할 수 있다.

dir로 확인해보면 아까는 없었던 builld 폴더가 생성된 것을 확인할 수 있다.

build > libs 폴더에 jar(혹은 war) 파일이 생성된 것을 볼 수 있다.

위와 같이 java -jar [파일명] 명령을 내리면 위와 같이 잘 접속되는 것을 확인할 수 있다.

이런 방식으로 만들어진 애플리케이션을 배포할 수 있다.

 

 

위 프로세스를 젠킨스에 구축하기

더보기

* 배포 파이프라인 구축 가이드라인 *

1. 깃허브 등의 클라우드 레포지토리에서 클론

2. 클린 및 빌드 수행

3. 빌드된 파일을 서버에서 구동

먼저, 젠킨스에서 새로운 아이템을 freestyle로 생성해준다.

위와 같이 ssh 추가 한 후 고급에서 verbose를 선택해준다.

rm -rf swu_stresstest_example                                       # 혹시 기존에 클론뜬 폴더가 존재한다면 삭제
git clone https://github.com/dev-library/swu_stresstest_example.git # 클론하기
cd swu_stresstest_example                                           # 작업 폴더를 받아온 폴더로 이동
chmod 544 ./gradlew                                                 # gradlew의 권한을 바꿔서 실행가능하게 변경
./gradlew clean build                                               # 클린 및 빌드를 통해 jar파일 생성
java -jar ./build/libs/spring_rest-0.0.1-SNAPSHOT.jar               # 생성된 jar파일로 서버 실행

 

이와 같이 터미널창에서 빌드할 때 사용할 구문을 적어주면 된다.

빌드를 해보면 클론까지는 성공했으니 java가 없다는 오류를 볼 수 있다.

# apt install openjdk-17-jdk -y
# java -version

위 명령을 통해 자바를 설치할 수 있다.

젠킨스에서 다시 빌드해보면 빌드가 잘 되고, 위와 같이 잘 접속되는 것을 확인해볼 수 있다.

 

※ 돌고 있던 스프링부트 어플리케이션 종료는 ps -ef나 kill 등의 명령어로 종료시킬 수 있다.

해당 구문을 스크립트 파이프라인 상단에 배치하면 새로운 배포 시작 전에 무조건 프로세스를 종료시키면서 시작할 수 있다.

'네트워크캠퍼스 > JENKINS' 카테고리의 다른 글

로드밸런싱  (1) 2024.02.27
nginx를 이용한 리버스 프록시  (0) 2024.02.27
Jenkins를 활용한 무중단배포  (0) 2024.02.26
Jenkins 환경설정  (0) 2024.02.23

+ Recent posts